我正在尝试使用mozrepl为页面注入其他脚本。
如果我手动运行这些操作,jQuery已成功加载,我可以稍后使用
> content.location.url = "..."
> repl.enter(content)
> var s=document.createElement('script')
> s.src='http://code.jquery.com/jquery-1.6.1.min.js'
> document.body.appendChild(s)
> [...more actions using jQuery's $ follow...]
现在我正在尝试将所有这些操作放入一个函数中,以便稍后加载到mozrepl中。它不起作用。看起来它与切换上下文有关,但我不确定。
有人可以启发我,出了什么问题以及如何解决这个问题?
答案 0 :(得分:1)
我没有使用过mozrepl,但我希望环境与其他用户代理的工作方式类似。您必须留出时间来下载和执行脚本,您不能指望它立即在DOM中。
在发生这种情况时,该功能不会停止执行,并且没有事件可以告诉您何时发生。
答案 1 :(得分:0)
经过一些试验和阅读XUL文档后,我想出了这个:
function on_page(url, func) {
var browser;
var on_page_load = function(aEvent) {
var doc = aEvent.originalTarget;
if (doc.location.href == content.location.href) {
browser.removeEventListener("load", on_page_load, true);
func.call(content);
}
};
var goto_page = function() {
browser = document.getElementById("appcontent"); // browser
browser.addEventListener("load", on_page_load, true);
content.location.href = url;
};
goto_page();
}