Sob*_*ott 5 javascript google-chrome-extension
我可以将数据从我的网页传递到Chrome扩展程序.我的代码如下.
var id = "myExtensionId";
chrome.runtime.sendMessage(id, { messageFromWeb: "Sample message" }, function (response) {
});
Run Code Online (Sandbox Code Playgroud)
我可以在扩展端获得选项卡ID.但是,如何将数据从扩展名发送回标签?以下代码是否正确?
chrome.runtime.onMessageExternal.addListener(
function(request, sender, sendResponse) {
if (request.messageFromWeb) {
console.log(request.messageFromWeb);
}
chrome.tabs.sendMessage(sender.tab.id,{ greeting: "hello" });
}
);
Run Code Online (Sandbox Code Playgroud)
代码, chrome.tabs.sendMessage(sender.tab.id,{ greeting: "hello" });
不会抛出错误.
如何在网页上收听从扩展中获取事件?
由于内容脚本和网站中的脚本可以看到相同的DOM,因此您可以使用它在它们之间进行通信.就像这样简单:
// data you want to sent
var data = {
random: 'Some data',
more: 'More data'
};
// send data through a DOM event
document.dispatchEvent(new CustomEvent('csEvent', {detail: data}));
Run Code Online (Sandbox Code Playgroud)
// Listen you CRX event
document.addEventListener('csEvent', function (event) {
var data = event.detail;
// Do something with you data from CRX
});
Run Code Online (Sandbox Code Playgroud)
如何做到这取决于您需要哪种类型的连接:一次性或长期使用.来自Chrome开发者页面消息:
有一个用于一次性请求的简单API和一个更复杂的API,它允许您使用长期连接来与共享上下文交换多个消息.
如果您只想发回一个回复,这里有一个例子:
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log(sender.tab ?
"from a content script:" + sender.tab.url :
"from the extension");
sendResponse({farewell: "Message back!"});
});
Run Code Online (Sandbox Code Playgroud)
编辑将内容脚本添加到网站脚本方式
归档时间: |
|
查看次数: |
2411 次 |
最近记录: |