Как получить доступ к расширению Google Chrome из любой страницы JavaScript - PullRequest
4 голосов
/ 12 апреля 2011

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

Любые указатели очень ценятся!

Ответы [ 2 ]

4 голосов
/ 12 апреля 2011

Я думаю, вам следует создать скрипт контента, который внедрит в вашу страницу объект, который вызывает ваше расширение.

Создайте скрипт содержимого, который вставляет YourExt.js в каждую страницу, который должен содержать:

var YourExt = {
doThis: function () {
    chrome.extension.sendRequest('doThis');
},
doThat: function () {
    chrome.extension.sendRequest({
        action: 'doThat',
        params: ['foo','bar']
    });
}
}
1 голос
/ 12 апреля 2011

Хотя расширения не могут получить доступ к переменным страницы и наоборот, вы можете общаться между страницей и расширением через события.Вот краткий пример создания пользовательских событий:

function fireEvent(name, target) {
    //Ready: create a generic event
    var evt = document.createEvent("Events")
    //Aim: initialize it to be the event we want
    evt.initEvent(name, true, true); //true for can bubble, true for cancelable
    //FIRE!
    target.dispatchEvent(evt);
}

function foobar() {
    alert("foobar");
}

function testEvents() {
    window.addEventListener("foobar", foobar, false); //false to get it in bubble not capture.
    fireEvent("foobar", document);
}

(взято из здесь )

Так что если вам нужно передать информацию со страницы в расширение,вам нужно будет запустить пользовательское событие на странице, которую вы будете слушать в вашем скрипте контента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...