Firefox 3 的站点兼容性
此页面试图概述 Gecko 1.8 和 Gecko 1.9 之间的更改,这些更改可能会影响网站的行为或渲染。
另请参阅 面向开发人员的 Firefox 3。
事件
捕获加载事件侦听器
在 Gecko 1.8 中,无法在图像上设置捕获加载事件侦听器。在 Gecko 1.9 中,此问题已通过 Firefox 错误 234455 修复。但这可能会导致网站出现问题,因为这些网站错误地将其事件侦听器设置为捕获加载事件。请参阅 Webkit 错误 335251 中的讨论。要解决此问题,有问题的页面不应设置捕获加载事件侦听器。
例如,这
window.addEventListener('load', yourFunction, true);
应更改为以下内容
window.addEventListener('load', yourFunction, false);
有关事件捕获工作原理的说明,请参阅 DOM 2 级事件捕获
preventBubble
已被移除
在 Gecko 1.8 中,事件上存在 preventBubble
方法以阻止事件向上冒泡。在 Gecko 1.9 中,此方法已被移除。相反,您应该使用标准的 stopPropagation(),它在 Gecko 1.8 中也能正常工作。 Firefox 错误 330494 中的补丁使这种情况成为可能。另请参阅 Webkit 错误 105280。
一些其他旧的事件 API 现已不再受支持
window.captureEvents
、window.releaseEvents
和 window.routeEvent
自 Gecko 1.9 起被视为已弃用。
DOM
WRONG_DOCUMENT_ERR
来自外部文档的节点应使用 document.importNode()
(或使用 document.adoptNode()
采用)克隆,然后才能将其插入当前文档。有关 Node.ownerDocument
问题的更多信息,请参阅 W3C DOM 常见问题解答。
Firefox 目前没有强制执行此规则(在 Firefox 3 的开发过程中强制执行了一段时间,但当强制执行此规则时,太多网站会中断)。我们鼓励 Web 开发人员修复其代码以遵循此规则,以提高未来的兼容性。
范围
intersectsNode
已被移除
在 Gecko 1.8 中,函数 intersectsNode
代码可用于测试节点是否与范围相交。但是,此函数的返回值令人困惑且很少有用,因此已在 Gecko 1.9 中移除。相反,请使用更精确且标准的函数 compareBoundaryPoints。 Firefox 错误 358073 中的补丁移除了此函数。
请参阅 intersectsNode 的文档,了解如何改用 compareBoundaryPoints
。
compareNode
已被移除
在 Gecko 1.8 中,函数 compareNode
代码可用于测试节点如何与范围相交。但是,此函数的返回值令人困惑且很少有用,因此已在 Gecko 1.9 中移除。相反,请使用更精确且标准的函数 compareBoundaryPoints。 Firefox 错误 358073 中的补丁移除了此函数。
请参阅 compareNode 的文档,了解如何改用 compareBoundaryPoints
。
HTML
已修复 <object>
中的许多错误
object
和 embed
元素不再需要 type
属性即可呈现。通过 JavaScript 更改 <embed>
的 src
属性或 <object>
的 data
属性现在可以正常工作。服务器发送的 Content-Type 标头(如果有)现在优先于 <object>
元素的 type
属性,如 HTML 规范所述(对于 embed
则不然)。