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

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

有人知道正确的咒语吗?

【问题讨论】:

    标签: asp.net javascript controls progressive-enhancement


    【解决方案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 TestingDetect if JavaScript is enabled in ASPX

        【讨论】:

        • 我一直在寻找比这更细粒度的东西。如果 JS 被禁用,我实际上需要渲染不同的元素。例如
          • // 启用 JAVASCRIPT // 禁用 JAVASCRIPT
        猜你喜欢
        • 1970-01-01
        • 2011-10-11
        • 2013-09-23
        • 2011-10-13
        • 2011-07-28
        • 2011-02-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多