【发布时间】:2010-09-19 18:37:36
【问题描述】:
在 ASP.NET Web 控件的 Render 方法中,我需要根据客户端浏览器上是否启用或禁用 JavaScript 来更改 Html 的输出,
有人知道正确的咒语吗?
【问题讨论】:
标签: asp.net javascript controls progressive-enhancement
在 ASP.NET Web 控件的 Render 方法中,我需要根据客户端浏览器上是否启用或禁用 JavaScript 来更改 Html 的输出,
有人知道正确的咒语吗?
【问题讨论】:
标签: asp.net javascript controls progressive-enhancement
你需要做的是这个。经过多次测试和深夜,我决定使用最简单的解决方案。将标签拖到页面顶部并确保其显示为“在服务器上运行”。然后,对于 Text 属性,输入 Text="This website requires Javascript"。这应该是最好的答案。 :D
【讨论】:
浏览器不会通过请求传达 Javascript 可用性。
虽然我不确定它是否适用于您的情况,但我已经完成的一件事是生成页面,就像未启用 Javascript 一样,然后使用一些 Javascript 来关闭仅 HTML 的内容并打开HTML-Javascript 的东西。
您还可以通过 Javascript 让首页点击“电话回家”以在会话中记录是否启用了 Javascript。
【讨论】:
这是一种检查何时提交表单的方法。
http://www.4guysfromrolla.com/webtech/082400-1.shtml
我认为没有任何 Request 属性会告诉您何时首次请求页面。有一个属性会告诉您浏览器是否支持 JS,但如果启用则不会。 See Here
【讨论】:
使用脚本检查javascript是否启用的问题是,只有在脚本没有运行后才能发现。
一些解决方案尝试相反 - 他们使用 javascript 设置一个值,然后在以后检测到该值时提供启用 Javascript 的控件。但是,使用 Firefox NoScript 插件等有时启用 javascript 的工具会失败。
更强大的解决方案是始终发送纯 HTML 兼容控件,然后在页面加载时运行 javascript 以添加正确的事件处理程序/额外的 DOM 元素/等。
但是我不知道这如何与 ASP.NET 的控件方法相匹配。
【讨论】:
noscript 标签用于定义脚本未执行时的替代内容(文本)。
编辑:嗨 Kieron,看看这个链接:Creating a Server Control for JavaScript Testing 和 Detect if JavaScript is enabled in ASPX
【讨论】: