2

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

替代文字

这段代码没有什么比Netvibes更危险的了。

为什么还要谈论 activeX ?我正在使用 JS。

我该如何防止呢?我不希望我的用户点击“我允许这个网站”工作。这就像放一个大红色的绝对DIV,上面写着“活得快,永远不会回来”。

4

2 回答 2

8

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

实际上 JS 传统上可以做一些从我的电脑区运行的坏事,比如安装 ActiveX 对象。许多过去的 IE 漏洞利用它来利用文件系统访问来访问任意代码。

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

(它们实际上并不在消费者领域,但我们永远不知道定制的企业应用程序世界中可能存在哪些肮脏的阴影。)

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

在这一点上,网络作者抱怨道,因此 MS 的反应不是消除过度锁定——<em>哦,不,这太容易了——而是增加了一层额外的复杂性。因此,现在您只需将文件放在文件顶部即可离开“我的电脑区”:

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

这种神秘的咒语被称为网络标记。它末尾的换行符必须是 Windows CRLF,如果您使用普通的 LF 行尾,它会很好地为您提供支持。包含此字符串会将您置于 JScript 工作的正常 Internet 区域,但您不会获得其他特殊权限。

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

非常感谢微软。

于 2009-10-07T21:32:18.813 回答
7

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

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

您可以将 localhost 添加到Trusted Sites Zone

于 2009-10-07T17:05:37.120 回答