我希望在安装后立即检测到扩展安装(适用于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”在匹配或其他内容中是不允许的?如果它是网址,是否有工作?