【问题标题】:Disabling JS from within Website for specific browsers从网站内为特定浏览器禁用 JS
【发布时间】:2011-10-03 21:36:37
【问题描述】:

我的网站完全设计为没有 javascript。 JS 是完全非侵入式添加的。

现在我不想在所有浏览器(尤其是旧 IE 版本)上测试 JS,因为它们没有提供调试反馈,而且不值得我花时间。

所以我只想在某些浏览器上禁用 JS(或相反:在我测试过的浏览器上允许它)。

有没有办法做到这一点?还是我必须创建一个每次执行 JS 之前都必须查阅的 JS 标志? (真的不想那样做)

【问题讨论】:

  • 你能更“具体”吗?您要排除哪些浏览器(版本)?

标签: javascript browser cross-browser unobtrusive-javascript


【解决方案1】:

我相信这会起作用:将其作为第一个 <script> 标签

if( /* test for browser */ ) killJS()
function killJS() {
    var scripts = document.getElementsByTagName("script")
    for( var i = 0; i < scripts.length; i++ )
    {
        var curr = scripts[i]
        if( curr.parentNode ) curr.parentNode.removeChild(curr)
    }
}

【讨论】:

  • 看起来是一个很好的起点。我会尝试一下,如果可行,请接受您的回答。谢谢。
【解决方案2】:

Cwallenpoole 的解决方案在我看来是行不通的,除非在 DOM 就绪事件上或至少在其他脚本标记之后调用它,此时脚本已经运行。

如果您的所有脚本都在一个地方,或者至少没有嵌入整个页面,也许您应该在检查浏览器后将它们包含在 JavaScript 中:

<script>
    if( /* Browser checks */ )
        document.write( '<script src="scripts.js"></script>' );
</script>

这是一个场景,它说明了为什么将代码 D.R.Y. 和所有内容保存在一个地方很重要。

要检测浏览器,请查看quirksmode,但如果这对您的用例更有用,请注意指向其对象检测页面的链接。 Yepnope.js 对后者很有用,后者是 Modernizr 的一部分。

【讨论】:

    猜你喜欢
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 2015-02-04
    • 2014-05-28
    • 1970-01-01
    • 2011-05-09
    • 2018-10-21
    相关资源
    最近更新 更多