如何使用mozrepl将代码注入页面?

时间:2011-07-16 08:58:01

标签: javascript firefox

我正在尝试使用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中。它不起作用。看起来它与切换上下文有关,但我不确定。

有人可以启发我,出了什么问题以及如何解决这个问题?

2 个答案:

答案 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();
}