javascript - 如何将参数从后台脚本传递到 chrome 扩展中的内容脚本?

标签 javascript google-chrome-extension

我有一个 chrome 扩展,它从后台脚本调用内容脚本以将 HTML 插入网页。

当我调用内容脚本 (inject.js) 时,我想从内容脚本 (eventpage.js) 传递一些参数,但这样做时遇到了一些麻烦。我也不想使用利用 chrome.storage 或 localstorage 的解决方案。

Manifest.json(相关部分):

{
  "manifest_version": 2,
  "content_scripts": [
    {
      "matches": ["http://*/*"],
      "js": ["inject.js"]
    }
  ],
  ...     
  "background": {
    "scripts": ["eventpage.js",...],
    "persistent": false
  },

}

Eventpage.js(后台):

// Want to add the parameter here

chrome.tabs.executeScript(tabId, {
    file: 'inject.js'
});

Inject.js(内容):

(function() {

    // Want to retrieve the parameter passed from eventpage.js here

})();

最佳答案

使用messaging :

Eventpage.js

// Want to add the parameter here
var parameterToSend;

chrome.tabs.executeScript(tabId, {
    file: 'inject.js'
}, function() {
    chrome.tabs.sendMessage(tabId, {parameter: parameterToSend});
});

注入(inject).js

(function() {

    // Want to retrieve the parameter passed from eventpage.js here

    chrome.runtime.onMessage.addListener(function(message) {
        var receivedParameter = message.parameter;

        //use receivedParameter as you wish.

    });

})();

关于javascript - 如何将参数从后台脚本传递到 chrome 扩展中的内容脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48693659/

相关文章:

google-chrome-extension - 是否可以从 Chrome 开发者工具窗口将 JavaScript 注入(inject)当前加载的页面?

google-chrome - 覆盖 HTTP 响应中的 "cache-control"值

javascript - 带有 javascript 文件的 Rails gem

javascript - HTML - 固定 div 仅在滚动后显示在位置 0,0

javascript - JQuery 在函数中传递值?

javascript - 使用 Chrome 扩展访问/操作实际 DOM

javascript - HTML 5(轨道元素)- Youtube 上未显示字幕

单击后退按钮时 Javascript 重定向

javascript - 在加载其他 View 之前, Angular 不显示 View