检测何时在 ASP.NET 中禁用 JavaScript

Posted

技术标签:

【中文标题】检测何时在 ASP.NET 中禁用 JavaScript【英文标题】:Detect when JavaScript is disabled in ASP.NET 【发布时间】:2010-09-19 18:37:36 【问题描述】:

在 ASP.NET Web 控件的 Render 方法中,我需要根据客户端浏览器上是否启用或禁用 javascript 来更改 html 的输出,

有人知道正确的咒语吗?

【问题讨论】:

【参考方案1】:

你需要做的是这个。经过多次测试和深夜,我决定使用最简单的解决方案。将标签拖到页面顶部并确保其显示为“在服务器上运行”。然后,对于 Text 属性,输入 Text="This website requires Javascript"。这应该是最好的答案。 :D

【讨论】:

【参考方案2】:

浏览器不会通过请求传达 Javascript 可用性。

虽然我不确定它是否适用于您的情况,但我已经完成的一件事是生成页面,就像未启用 Javascript 一样,然后使用一些 Javascript 来关闭仅 HTML 的内容并打开HTML-Javascript 的东西。

您还可以通过 Javascript 让首页点击“电话回家”以在会话中记录是否启用了 Javascript。

【讨论】:

遗憾的是,可以在不清除 cookie 的情况下启用或禁用 javascript,因此“phone home”方法不是防故障的。 @JanDvorak - 同意,这不是也不会是我的第一选择。我认为总的来说这将是非常安全的,因为关闭 javascript 的人可能会关闭它而不是更改中游,如果他们确实更改了中游,他们可能会期待奇怪的行为。后续页面上的脚本损坏是一个不同的问题。【参考方案3】:

这是一种检查何时提交表单的方法。

http://www.4guysfromrolla.com/webtech/082400-1.shtml

我认为没有任何 Request 属性会告诉您何时首次请求页面。有一个属性会告诉您浏览器是否支持 JS,但如果启用则不会。 See Here

【讨论】:

【参考方案4】:

使用脚本检查javascript是否启用的问题是,只有在脚本没有运行后才能发现。

一些解决方案尝试相反 - 他们使用 javascript 设置一个值,然后在以后检测到该值时提供启用 Javascript 的控件。但是,使用 Firefox NoScript 插件等有时启用 javascript 的工具会失败。

更强大的解决方案是始终发送纯 HTML 兼容控件,然后在页面加载时运行 javascript 以添加正确的事件处理程序/额外的 DOM 元素/等。

但是我不知道这如何与 ASP.NET 的控件方法相匹配。

【讨论】:

我认为你是对的,最好假设 JS 被禁用,然后在到达客户端时运行脚本来转换元素。谢谢。【参考方案5】:

noscript 标签用于定义脚本未执行时的替代内容(文本)。

编辑:嗨 Kieron,看看这个链接:Creating a Server Control for JavaScript Testing 和 Detect if JavaScript is enabled in ASPX

【讨论】:

我一直在寻找比这更细粒度的东西。如果 JS 被禁用,我实际上需要渲染不同的元素。例如 // 启用 JAVASCRIPT // 禁用 JAVASCRIPT

以上是关于检测何时在 ASP.NET 中禁用 JavaScript的主要内容,如果未能解决你的问题,请参考以下文章

检测ASP.NET中禁用JavaScript的时间

如何最好地检测 ASP.NET 过期会话?

如何检测用户何时离开网站?

HttpModule Init 方法何时在 ASP.NET 集成模式下运行?

Asp.Net 何时删除过期的缓存项?

何时在 ASP.Net MVC 中使用 TempData 与 Session