为什么 chrome.tabs.executeScript 方法的回调结果总是返回一个空对象?

问题描述

我最近发现了 chrome 扩展 开发并被 runtime.excuteScript 方法卡住了,第三个参数中的回调系统地返回了我一个空对象强> ...

为简洁起见,我将不使用我所有的 manifest.json(v2):

清单权限:

  "permissions": [
    "storage","cookies","tabs","background","activeTab","<all_urls>","*://*/*"
  ]

清单内容脚本:

  "content_scripts": [
    {
      "matches": ["<all_urls>"],"run_at": "document_end","js": ["js/content-script.js"]
    }
  ]

我的目标是将 localStorage 的内容发送到我的扩展程序。

pop-up.js:

chrome.tabs.executeScript(
  null,{ file: "js/content-script.js" },(result) => {
    if(result) console.log( "? Result of content-script:",result ) 
    else console.log("? No content-script,no result")
  }
);

content-script.js:

localStorage;

扩展控制台输出

? Result of content-script: Array(1)
   ▶︎ 0: {} 
   length:1
   ▶︎ __proto__: Array(0)

请向我解释错误,让这个夜晚变得美好!谢谢!

解决方法

我一直没有找到解决方案。 但是我通过使用这种方法发送我的数据解决了这个问题:

▼ content-script.js:

chrome.runtime.sendMessage({'localStorage' : localStorage});

▼ pop-up.js:

chrome.runtime.onMessage.addListener((message) => {message.localStorage});