检测何时在 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的主要内容,如果未能解决你的问题,请参考以下文章