在什么情况下IE8阻止Javascript以及如何避免它?

时间:2009-10-07 16:58:19

标签: javascript jquery activex internet-explorer jquery-tools

我有一个使用jQuery,jQuery Tools和一些手工制作的JS运行图形增强功能的网站。虽然它在FF,Safari和Chrome上运行顺畅,但IE会阻止脚本执行:

alt text

这个代码没有什么特别危险,比如说,Netvibes

为什么甚至谈论activeX?我正在使用JS。

我该如何预防呢?我不希望我的用户点击“我允许这个网站”工作。这就像把一个大红色的绝对DIV读起来“快速生活,永不回来”。

2 个答案:

答案 0 :(得分:8)

  

js无法访问文件系统,那有什么意义呢?

实际上JS传统上可以从My Computer Zone运行一些不好的东西,比如安装ActiveX对象。许多过去的IE漏洞使用它来利用文件系统访问任意代码访问。

面对这个问题,微软决定解决这个问题,而不是简单地删除我的电脑区域 - 哦不,这太容易了 - 但是增加了一层额外的复杂性。因此,Internet Explorer获得了一个选项,默认情况下,用于锁定文件系统中的内容,同时允许使用嵌入式WebBrowser控件的其他应用程序像以前一样继续使用,理由是某些应用程序可能依赖于其内部HTML中的松散设置接口

(他们不是,真的,在消费领域,但我们永远不知道在定制的企业应用程序世界中可能存在什么样的污秽。)

在IE一直被黑客入侵的尴尬之后,MS对文件系统页面的锁定设置进行了过度补偿,甚至比来自Intenet的普通网页更具限制性。因此,您无法从文件系统中的文件中运行JavaScript,这是没有特别好的理由。

此时网络作者发牢骚,所以MS的回应不是通过消除过度锁定 - 哦不,这太容易了 - 而是增加了一层复杂性。所以现在只需放在文件顶部就可以离开我的电脑区:

<!-- saved from url=(0014)about:internet -->

这个神秘的咒语被称为Mark of the Web。它的最后一行必须是一个Windows CRLF,如果你使用普通的LF行结束,它会很好地阻止你。包含此字符串会使您进入JScript正常工作的普通Internet区域,但您没有其他特殊权限。

有趣的是,从那时起,“我的电脑”区域中的正常安全设置已经收紧,因此它与默认的Internet区域几乎相同。因此,最终的结果就像他们刚刚摆脱血腥的我的电脑区一样,只会给用户带来许多额外的复杂性,并给网络作者带来麻烦。

非常感谢微软。

答案 1 :(得分:7)

正如肯·布朗宁在对你的问题的评论中所说的那样,在本地网页所在的高安全区域,javascript会发生此提醒。

如果有人将互联网作为高安全区,则会弹出警告。

您可以将localhost添加到Trusted Sites Zone