如何知道DOM在用window.location.href更改URL后何时又准备好了

how to know when the DOM is ready again after changing URL with window.location.href

本文关键字:URL 更改 何时又 准备好了 href location 何知道 DOM 在用 window      更新时间:2023-09-26

我正在使用Add-on SDK编写Firefox扩展,我成功地从内容脚本扫描了一个站点,现在想要更深入。但是,当我用

更改url时
window.location.href = "http://www.thatsite.com/foo.php";
alert($('#abc');

我无法访问新的DOM。在网站被完全阅读之前,警报就会出现。我试过$(document).ready(function(),但似乎这只起作用一次…

我怎么能等到网站完全建成?

您的内容脚本仅在页面加载时存在-如果您导航到其他页面,则该内容脚本实例将被卸载。内容脚本的另一个实例将被加载到新页面中,但是,您可以在那里执行所有必要的操作。唯一的问题是将数据从旧实例传递到新实例。您可以使用postMessage()将数据发送到附加组件,然后让附加组件将其发送到onAttach()处理程序中的新内容脚本。在你的情况下,这是否有可能取决于你想要达到的目标(你在问题中没有这么说)。

如果你想通过改变位置与选项卡交互,你需要将JS移动到更高的级别。参见:MDC文档。实际上,您的JS只在当前页面的上下文中应用一次。一旦新页面加载,它实际上就不存在了。

真的,你不应该像这样从一个插件与页面交互。这种行为类似于Greasemonkey用户脚本,而不是Firefox扩展。