google-chrome-extension - Chrome扩展程序将Background.js中的消息发送到内容脚本

标签 google-chrome-extension manifest content-script

我已经阅读了有关如何执行将消息从后台javascript文件(main.js)发送到内容脚本(content.js)的文档,但无法获取onMessage来打开警报。

Manifest.json

{
   "name": "Example",
   "version": "1.0.1",
   "manifest_version" : 2,
   "description": "Example Description",
   "background" : {
     "scripts" : ["main.js"]
   },
   "page_action" : {
      "default_icon": {
         "19": "icons/19.png",
         "38": "icons/38.png"
      },
      "default_title" : "Example Title"
   },
   "content_scripts": [{
      "matches": ["<all_urls>"],
      "js": ["lib/jquery-1.8.3.min.js","scripts/content.js"],
      "run_at": "document_idle",
      "all_frames": false
   }],
   "permissions": [
       "tabs",
       "geolocation"
   ],
   "icons": {
       "16": "icons/16.png",
       "48": "icons/48.png",
       "128": "icons/48.png"
   }

}

背景javascript文件(main.js)
chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
    chrome.tabs.sendMessage(tabs[0].id, {action: "SendIt"}, function(response) {});  
});

内容javascript文件(content.js)
chrome.extension.onMessage.addListener(function(msg, sender, sendResponse) {
   if (msg.action == 'SendIt') {
      alert("Message recieved!");
   }
});

最佳答案

由于@Teepeemm的洞察力,我在将消息发送到内容脚本之前包含了一个制表符加载完成功能。

等待标签完全加载

chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {          
   if (changeInfo.status == 'complete') {   
      chrome.tabs.query({active: true, currentWindow: true}, function(tabs){
         chrome.tabs.sendMessage(tabs[0].id, {action: "SendIt"}, function(response) {});  
      });
   }
});

关于google-chrome-extension - Chrome扩展程序将Background.js中的消息发送到内容脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21148115/

相关文章:

java - android.permission.RECEIVE_BOOT_COMPLETED 不会在启动时启动 Activity

dom - Chrome 扩展内容脚本未访问注入(inject)它的页面的 DOM

google-chrome-extension - Chrome 扩展程序未在 YouTube 的浏览器导航中加载

jquery - 如何使 Google Chrome 扩展运行 jQuery 脚本

javascript - 使用 Chrome 扩展程序访问 Google Chrome 浏览器中的搜索查询文本

google-chrome - list .json :34:1: an object must end with '}'

google-chrome - 是否可以通过 Chrome 扩展程序中的上下文菜单项调用内容脚本方法?

google-chrome-extension - Chrome 扩展程序在控制台中抛出错误

winapi - 如何使用我自己的 list 文件并将其嵌入到使用 Visual Studio 2017 的可执行文件中?

java - ImplementedVersion 在 exec :java target 中无法访问