我正在使用附加SDK编写Firefox扩展,并且我成功地从内容脚本扫描了一个站点,并希望现在更深入。但是,当我用
更改网址时window.location.href = "http://www.thatsite.com/foo.php";
alert($('#abc');
我无法访问新DOM。在完全读取站点之前出现警报。我试过$(document).ready(function()
,但似乎这只能运作一次......
我怎么能等到网站完全构建?
答案 0 :(得分:3)
只要页面加载,您的内容脚本就会存在 - 如果您导航到另一个页面,将卸载此内容脚本实例。内容脚本的另一个实例将被加载到新页面中,但是,您可以在那里执行所有必要的操作。唯一的问题是将数据从旧实例传递到新实例。您可以使用postMessage()
将数据发送到加载项,然后将加载项发送到onAttach()
处理程序中的新内容脚本。在你的情况下这是否可能取决于你想要实现的目标(你没有在问题中说明。)
答案 1 :(得分:1)
如果您想要与位置不断变化的标签进行交互,则需要将JS移至更高级别。见:MDC docs。实际上,您在当前页面的上下文中应用了一次JS。一旦新页面加载,它实际上是不存在的。
实际上,你不应该像插件那样与网页进行交互。这种行为类似于Greasemonkey用户脚本,而不是Firefox扩展。