在使用window.location.href更改URL后,如何知道DOM何时再次准备就绪

时间:2011-10-11 14:42:25

标签: javascript dom firefox-addon firefox-addon-sdk

我正在使用附加SDK编写Firefox扩展,并且我成功地从内容脚本扫描了一个站点,并希望现在更深入。但是,当我用

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

我无法访问新DOM。在完全读取站点之前出现警报。我试过$(document).ready(function(),但似乎这只能运作一次......

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

如果您想要与位置不断变化的标签进行交互,则需要将JS移至更高级别。见:MDC docs。实际上,您在当前页面的上下文中应用了一次JS。一旦新页面加载,它实际上是不存在的。

实际上,你不应该像插件那样与网页进行交互。这种行为类似于Greasemonkey用户脚本,而不是Firefox扩展。