如何使用chrome扩展程序从网页的onClick事件接收消息?

时间:2013-12-11 07:12:16

标签: google-chrome-extension

我想在Chrome浏览器的所有标签上捕获已注入脚本的点击事件。

如下方法

event.js是主要的javascript,test.js是注入js。

event.js

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo) {
    if (changeInfo.status === 'complete') {
        chrome.tabs.executeScript(tabId, { file: 'test.js'}, function(){
         console.log('executed'); 
        });
    }
});

test.js

var fragment = create('<div onClick="sendMessage to my extension">Hellow</div>');
document.body.insertBefore(fragment, document.body.childNodes[0]);

如何从其他网站接收我的扩展信息? 这不可能吗?

感谢阅读。

1 个答案:

答案 0 :(得分:1)

假设您正在正确地将test.js作为内容脚本注入(例如,通过在 manifest.json 中声明相应的属性),您需要制作以下修改:

event.js 中添加:

chrome.runtime.onMessage.addListener(function(msg, sender) {
    console.log('Tab with ID ' + sender.tab.id + ' sent a message:\n' + msg.text);
});

test.js 中将代码替换为:

var mydiv = document.createElement('div');
mydiv.textContent = 'Hello';
mydiv.addEventListener('click', function() {
    chrome.runtime.sendMessage({ text: 'Someone clicked my DIV !' });
});
document.body.insertBefore(mydiv, document.body.childNodes[0]);