如何从任何页面的JavaScript访问谷歌浏览器扩展程序

时间:2011-04-12 14:48:56

标签: google-chrome google-chrome-extension

我想知道如何从普通网页调用我的扩展程序。 我发现的所有文档似乎都是用于扩展之间的通信,或者是内容脚本和扩展之间的通信。

非常感谢任何指针!

2 个答案:

答案 0 :(得分:4)

我认为你应该创建一个内容脚本,将一个对象注入到调用你的扩展名的页面中。

创建一个内容脚本,将YourExt.js注入每个页面,其中应包含:

var YourExt = {
doThis: function () {
    chrome.extension.sendRequest('doThis');
},
doThat: function () {
    chrome.extension.sendRequest({
        action: 'doThat',
        params: ['foo','bar']
    });
}
}

答案 1 :(得分:1)

虽然扩展程序无法访问页面变量,反之亦然,但您可以通过事件在页面和扩展程序之间进行通信。以下是创建自定义事件的快速示例:

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);
}

(摘自here

因此,如果您需要将信息从页面传递到扩展程序,则需要在您将在内容脚本中收听的页面上触发自定义事件。