从特定浏览器的网站内禁用JS

时间:2011-07-12 18:38:35

标签: javascript browser cross-browser unobtrusive-javascript

我的网站完全是为了没有javascript而设计的。 JS完全没有侵入性地添加。

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

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

有办法吗?或者我必须创建一个JS标志,每次执行JS之前我都要查询它? (真的不想这样做)

2 个答案:

答案 0 :(得分:0)

我相信这会有效:将此作为第一个<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)
    }
}

答案 1 :(得分:0)

Cwallenpoole的解决方案让我觉得它不会起作用,除非它在DOM就绪事件上调用,或者至少在其他脚本标记之后调用,此时脚本已经运行。

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

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

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

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