从chrome extension onInstalled向网页发送消息

时间:2016-08-27 11:03:31

标签: javascript google-chrome-extension

我希望在安装后立即检测到扩展安装(适用于Chrome,Mozilla,Safari)。 我开始使用Chrome和我的 我的Chrome版本为 52.0.2743.116(64位)

我尝试在我的网页中添加addEventListner后从chrome的content_script发布消息,

但只有在安装扩展程序后重新加载页面后它才有效。 我不想重新加载页面。

我在chrome Extension中搜索并解决了“ onInstalled ”方法,所以当尝试“onInstalled”事件时,我尝试从background.js向content_script发送消息

background.js

chrome.runtime.onInstalled.addListener(function(details) {
console.log('installed');
chrome.tabs.query({ currentWindow : true}, function(tabs) {
    tabs.forEach(function(tab) {
        chrome.tabs.sendMessage(tab.id, { action : "Installed"},function(response) {
            console.log(response);
        });
    });
  });
});

content_script.js

// I also tried chrome.extension.onMessage.addListener
chrome.runtime.onMessage.addListener (function (request, sender, sendResponse) {
    console.log('got message at content script');
 window.postMessage( { type: 'installed', text: 'true' }, "*" );
});

网页js

 window.addEventListener( "message", function(event) {

    console.log(event.data.type);
});

manifest.js在权限

中有“标签”

我在background.js中的响应未定义,我从未到过content_script的控制台,因此无法发布消息onInstalled

然后我试了

chrome.tabs.executeScript(tab.id, {file: "content_script.js"});

这样做了,我现在不需要重新加载页面。 但我仍然好奇为什么background.js无法向content_script发送消息。 是因为网址“chrome:// extensions”在匹配或其他内容中是​​不允许的?如果它是网址,是否有工作?

0 个答案:

没有答案