javascript - 从 Chrome 扩展程序中的内容脚本传递消息

标签 javascript google-chrome-extension content-script message-passing

我想运行一个内容脚本来识别链接到某处的第一个图像并将链接返回到后台脚本。但我无法在他们之间传递任何消息,我也不知道为什么。大部分代码都是注释,我试图通过告诉内容脚本将第一个 header 更改为“测试”来简单地测试内容脚本是否正在执行(因为没有消息我唯一能做的就是更改页面的 HTML 和 CSS) 。代码如下: 编辑:完整更新的代码

后台脚本:

chrome.browserAction.onClicked.addListener(function () {
chrome.tabs.query({active:true, currentWindow:true}, function(tabs)
{
    chrome.tabs.executeScript(tabs[0].id, {file:"content.js"}, function ()
    {
        console.log("sending first time");
        console.log(tabs[0].id);
        chrome.tabs.sendMessage(tabs[0].id,{test: "test"}, function (response)
        {
            if (undefined == response)
            {
                console.log ("first one didn't work");
                chrome.tabs.sendMessage(tabs[0].id, {test: "test"}, function (response)
                {
                    console.log(response.test);
                });
            }
        });
    });
});
});

内容脚本:

chrome.runtime.onMessage.addListener( function (msg, sender, sendResponse)
{
/*var test1 = document.getElementsByTagName("h1")[0];
test1.innerHTML="test";*/
sendReponse({test: "123"});
/*var parentList =document.getElementsByTagName("a");
var link = "";
var child;
for (var i=2; i<parentList.length;i++)
{
    child=parentList[i].firstChild;
    if ("IMG"==child.nodeName)
    {
        link=parentList[i].href;
        break;
    }
}
teste1.innerHTML=link;
var answer = new Object();
Answer.link = link;
teste1.innerHTML=answer.link;
sendResponse({messager:answer});*/
});

最佳答案

我正在扩展页面本身测试扩展。但似乎你不能在其中注入(inject)javascript(可能因为它是浏览器的设置页面)。它在其他页面上运行得很好。

关于javascript - 从 Chrome 扩展程序中的内容脚本传递消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21796590/

相关文章:

javascript - 文本更改时按钮的动画宽度

javascript - 如何修复云上升?

javascript - 在不构建表单的情况下从 <a> 标记执行 DELETE 请求?

javascript - 在 Chrome 扩展内容脚本中包含 Javascript 文件

google-chrome-extension - 如何检测 Chrome 扩展内容脚本中的页面语言/语言环境?

javascript - 我可以让我的 Ajax 调用导致出现 "in-progress"光标吗?

javascript - 尝试创建谷歌通知,未捕获的 TypeError 错误

google-chrome-extension - 未捕获的类型错误 : Cannot read property 'sync' of undefined in chrome extension (manifest v3)

javascript - Chrome 扩展中的 Chromeless 窗口?

javascript - Chrome 扩展选项页面不保存值