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



我正试图弄清楚如何从正常的网页调用我的扩展。我找到的所有文档似乎要么用于扩展之间的通信,要么用于内容脚本和扩展之间的通信。

任何提示都非常感谢!

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

创建一个内容脚本,将youext .js注入到每个页面,它应该包含:

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

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

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

(from here)

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

相关内容

最新更新