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

e-s*_*tis 2 javascript jquery internet-explorer activex jquery-tools

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

替代文字

这个代码没有什么特别比Netvibes更危险了.

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

我该如何防止这种情况?我不希望我的用户点击"我允许这个网站"工作.这就像把一个大红色的绝对DIV读起来"快速生活,永不回来".

bob*_*nce 8

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

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

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

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

在IE一直被黑客入侵的尴尬之后,MS过度补偿使文件系统页面的锁定设置比来自Intenet的普通网页更具限制性.所以你不能从文件系统的文件中运行JavaScript,这是没有特别好的理由.

在这一点上,网络作者发出了呜呜声,所以MS的回应不是通过消除过度锁定 -  哦不,这太容易了  - 但是增加了一层额外的复杂性.所以现在只需将文件放在文件的顶部即可离开"我的电脑区":

<!-- saved from url=(0014)about:internet -->
Run Code Online (Sandbox Code Playgroud)

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

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

非常感谢微软.


Est*_*ber 7

正如肯·布朗宁在对你的问题的评论中所说,当在本地页面所在的高安全性区域时,javascript会发生此警报.

如果有人将Internet作为高安全区,则会弹出警告.

您可以将localhost添加到" 受信任的站点"区域.

  • 澄清一下:IE将本地文件默认为"高安全性",因为很容易让某人下载文件然后在他们的机器上本地打开它,从而使病毒和网络钓鱼变得更加容易.默认情况下,"Internet"不是高安全区,因此通常不会阻止JS.如果用户将"Internet"设置为高安全区,则任何带有JS的页面将始终显示该消息并阻止JS/ActiveX. (3认同)