Firefox 3 的站点兼容性

此页面试图概述 Gecko 1.8 和 Gecko 1.9 之间的更改,这些更改可能会影响网站的行为或渲染。

另请参阅 面向开发人员的 Firefox 3

事件

捕获加载事件侦听器

在 Gecko 1.8 中,无法在图像上设置捕获加载事件侦听器。在 Gecko 1.9 中,此问题已通过 Firefox 错误 234455 修复。但这可能会导致网站出现问题,因为这些网站错误地将其事件侦听器设置为捕获加载事件。请参阅 Webkit 错误 335251 中的讨论。要解决此问题,有问题的页面不应设置捕获加载事件侦听器。

例如,这

bash
window.addEventListener('load', yourFunction, true);

应更改为以下内容

bash
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.captureEventswindow.releaseEventswindow.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 中移除。相反,请使用更精确且标准的函数 compareBoundaryPointsFirefox 错误 358073 中的补丁移除了此函数。

请参阅 intersectsNode 的文档,了解如何改用 compareBoundaryPoints

compareNode 已被移除

在 Gecko 1.8 中,函数 compareNode 代码可用于测试节点如何与范围相交。但是,此函数的返回值令人困惑且很少有用,因此已在 Gecko 1.9 中移除。相反,请使用更精确且标准的函数 compareBoundaryPointsFirefox 错误 358073 中的补丁移除了此函数。

请参阅 compareNode 的文档,了解如何改用 compareBoundaryPoints

HTML

已修复 <object> 中的许多错误

objectembed 元素不再需要 type 属性即可呈现。通过 JavaScript 更改 <embed>src 属性或 <object>data 属性现在可以正常工作。服务器发送的 Content-Type 标头(如果有)现在优先于 <object> 元素的 type 属性,如 HTML 规范所述(对于 embed 则不然)。