我想知道如何从普通网页调用我的扩展程序。 我发现的所有文档似乎都是用于扩展之间的通信,或者是内容脚本和扩展之间的通信。
非常感谢任何指针!
答案 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)
因此,如果您需要将信息从页面传递到扩展程序,则需要在您将在内容脚本中收听的页面上触发自定义事件。