Google Chrome扩展程序content_script sendResponse不起作用

时间:2017-09-05 19:29:35

标签: google-chrome-extension

首先我从弹出窗口

进行了查询

requestForCodeMirrorElement(){ 
    chrome.tabs.query({active: true, currentWindow: true}, (tabs) => {
      chrome.tabs.sendMessage(tabs[0].id, {name: "GetChosenCodeMirrorText"}, (response) => {
        console.log(response);
      });
    });
  }

然后我在content_script中添加它

chrome.runtime.onMessage.addListener(
  function(request, sender, sendResponse) {

    if (request.name == "GetChosenCodeMirrorText"){
        var codeMirrorContent='empty';

        document.addEventListener('GetContent', function (e){
            codeMirrorContent =e.detail.content;
            console.log(codeMirrorContent);
            sendResponse({chosenCodeMirrorText: codeMirrorContent});
        });


        var s = document.createElement('script');
        s.src = chrome.extension.getURL('get_codemirror_script.js');
        (document.head||document.documentElement).appendChild(s);
        s.onload = function() {
            s.parentNode.removeChild(s);
        };
    }
    return true;
});

我写了这个名为get_codemirror_script.js的文件,它已被添加到manifest.json中。

当我在Chrome中测试代码时,我在控制台中获得了codeMirrorContent,所以我认为get_codemirror_script.js没有任何问题。

当我将content_script更改为:

chrome.runtime.onMessage.addListener(
  function(request, sender, sendResponse) {

    if (request.name == "GetChosenCodeMirrorText"){
        var codeMirrorContent='empty';
        
        sendResponse({chosenCodeMirrorText: "forTest"});
        
        document.addEventListener('GetContent', function (e){
            codeMirrorContent =e.detail.content;
            console.log(codeMirrorContent);
        });


        var s = document.createElement('script');
        s.src = chrome.extension.getURL('get_codemirror_script.js');
        (document.head||document.documentElement).appendChild(s);
        s.onload = function() {
            s.parentNode.removeChild(s);
        };
    }
});

我在弹出控制台中获得“forTest”。所以我想sendRequest应该有一些问题。我该如何解决?

更新: 仅供参考,我曾经注入嵌入式代码(参见Insert code into the page context using a content script),而不是像上面描述的那样注入文件。那个时候它工作正常。

0 个答案:

没有答案