Как ввести код на страницу, используя mozrepl? - PullRequest
2 голосов
/ 16 июля 2011

Я пытаюсь внедрить дополнительные скрипты на страницу, используя 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 ]

1 голос
/ 16 июля 2011

Я не использовал mozrepl, но я ожидаю, что среда работает аналогично другим пользовательским агентам.Вы должны дать время для загрузки и выполнения скрипта, вы не можете ожидать, что он мгновенно окажется в DOM.

Функция не прекратит выполнение, пока это происходит, и нет события, которое сообщит вам, когда это произойдет.

0 голосов
/ 17 июля 2011

После некоторых испытаний и чтения документации 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...