0

我正在制作一个 chrome 扩展,它将:

  1. 检测 POST 请求
  2. 向发出请求的选项卡中运行的内容脚本发送消息
  3. 从 DOM 中检索一些数据并使用 sendResponse 将其发回

但大多数时候我得到“未定义”作为从 sendResponse 发送的消息。

我做了一个虚拟扩展来进一步调试它,奇怪的是它有时只工作。在比较请求的 responseHeaders 后,我无法确定此行为的原因。

我用它来测试,点击“相关搜索”按钮。 https://www.gamiss.com/wholesale-cheap/buckle-leather-belt/

我在这里想念什么?

清单.json

{
    "manifest_version": 2,
    "content_scripts": [
      {
        "matches": [
          "<all_urls>"
        ],
        "all_frames": true,
        "js": ["testContent.js"]
      }
    ],
    "permissions": [
      "tabs",
      "webRequest",
      "<all_urls>"
    ],
    "background": {
      "scripts": ["testBackground.js"],
      "persistent": true
    }
}

测试背景.js

    chrome.webRequest.onResponseStarted.addListener(function(e){
    if(e.type === "main_frame"){

        console.log(e);

        chrome.tabs.query({
            active:true,
            currentWindow:true
        },function (tabs){
            chrome.tabs.sendMessage(tabs[0].id, {message: "Hi there..."}, function (response){
                console.log(response);
            });
        });
    }

},{ 
    urls: ["<all_urls>"],
    types: ["main_frame"]
},["responseHeaders"]
);

测试内容.js

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) {
      if (request.message == "Hi there..."){
          console.log(request.message);
        sendResponse({response: "bye bye"});
        return true;
      } else {
          sendResponse({});
      }

    });
4

0 回答 0