我正试图弄清楚如何从正常的网页调用我的扩展。我找到的所有文档似乎要么用于扩展之间的通信,要么用于内容脚本和扩展之间的通信。
任何提示都非常感谢!
我认为你应该做一个内容脚本,注入一个对象到你的页面调用你的扩展。
创建一个内容脚本,将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)
因此,如果您需要将信息从页面传递到扩展,则需要在您将在内容脚本中侦听的页面上触发自定义事件