更新 Firefox 3 的 Web 应用程序

即将发布的 Firefox 3 中有许多可能影响您网站或 Web 应用程序的更改,以及一些您可能希望利用的新功能。本文将作为您更新内容以充分利用 Firefox 3 的起点。

DOM 更改

来自外部文档的节点在可以插入到当前文档之前,应该使用 document.importNode()(或使用 document.adoptNode() 进行采用)进行克隆。关于 Node.ownerDocument 问题的更多信息,请参阅 W3C DOM FAQ

Firefox 目前不强制执行此规则(在 Firefox 3 开发期间曾强制执行过一段时间,但强制执行此规则导致太多网站出错)。我们鼓励 Web 开发人员修复其代码以遵循此规则,以提高未来的兼容性。

HTML 更改

字符集继承更改

Firefox 3 修复了框架和 iframe 中允许它们继承父级字符集的安全漏洞。这在某些情况下可能会导致问题。现在,只有当框架和父级都从同一服务器加载时,才允许框架继承父级的字符集。如果您有假定来自其他服务器的框架将继承相同字符集的页面,则应更新框架的 HTML 以明确指示其字符集。

SCRIPT 元素更改

text/html 文档中,<script> 元素现在需要一个闭合的 </script>(在 HTML 4 文档中),即使您不包含任何内容。在以前版本的 Firefox 中,您可以这样做:

html
<script … />

现在,标记必须符合 HTML 规范(如果它实际上是 HTML),因此您必须实际关闭它,如下所示:

html
<script …></script>

这提高了兼容性和安全性。

CSS 更改

基于 em、ex 单位的字号更改

之前,em 和 ex 单位的字号值会受到用户最小字号设置的影响:如果一个字号由于最小字号而显示得更大,那么基于此字号的字号设置的 em 和 ex 单位也会相应地扩大。这与基于百分比的字号表现方式不一致。

现在,em 和 ex 单位的字号值基于一个“预期字号”,该字号不受用户最小字号设置的影响。换句话说,字号始终根据设计者的意图计算,然后根据最小字号进行调整。

请参阅 Firefox bug 434718,特别是其 NOT A CASE FOR THE BUG TEMPLATE - The following link points to a Bugzilla attachment, not a Bugzilla bug; if you use the attachment number as a bug number, it becomes nonsense attachment 322943 NOT A CASE FOR THE BUG TEMPLATE 以获取演示(必须以最小字号 >= 6 进行查看才能看到差异:在 Firefox 2 中,两个框的级联表现不同,因为基于 em 的字号会“反弹”最小字号)。

安全更改

Chrome 访问

在以前版本的 Firefox 中,任何网页都可以使用 chrome:// 协议从 chrome 加载脚本或图片。这使得网站能够检测到插件的存在——这可能被用来绕过添加安全功能的插件,从而损害用户的安全。

Firefox 3 仅允许 Web 内容访问 chrome://browser/chrome://toolkit/ 空间中的项。这些文件旨在供 Web 内容访问。所有其他 chrome 内容现在都无法被 Web 访问。

但是,扩展程序可以通过在 chrome.manifest 文件中指定一个特殊标志来使其内容可供 Web 访问,如下所示:

content my-package location/ contentaccessible=yes

这通常不需要您进行操作,但对于那些少数需要它的情况,它仍然可用。请注意,Firefox 可能会提醒用户您的扩展程序以这种方式使用了 contentaccessible 标志,因为它确实构成了潜在的安全风险。

注意:由于 Firefox 2 不理解 contentaccessible 标志(它会忽略包含该标志的整行),如果您希望您的附加组件与 Firefox 2 和 Firefox 3 都兼容,您应该这样做:

bash
content my-package location/
content my-package location/ contentaccessible=yes

文件上传字段

在以前版本的 Firefox 中,有时用户在提交文件进行上传时,文件的完整路径会提供给 Web 应用程序。Firefox 3 解决了这个隐私问题;现在只有文件名本身可供 Web 应用程序访问。

在框架中使用远程 JAR

现在不允许在框架中使用从其他域加载的 JAR 文件中的代码;这可以缓解一个潜在的攻击向量

file: URI 的同源策略更改

Firefox 3 中 file: URI 的同源策略已更改。这可能会影响您的内容;请参阅 file: URI 的同源策略 以获取详细信息。

JavaScript 更改

Firefox 3 支持 JavaScript 1.8。一个可能需要更新您的网站或应用程序的重要更改是,已废弃且非标准的 Script 对象不再受支持。这不是 <script> 标签,而是一个从未标准化的 JavaScript 对象。您可能从未实际使用过它,所以您可能没事。

另见