首先我从弹出窗口
进行了查询
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),而不是像上面描述的那样注入文件。那个时候它工作正常。