gpt4 book ai didi

javascript - chrome.tabs.executeScript() : How to get result of content script?

转载 作者:搜寻专家 更新时间:2023-11-01 04:59:47 25 4
gpt4 key购买 nike

根据documentation for chrome.tabs.executeScript ( MDN ),回调函数接受来自脚本执行的“任何结果数组”结果集。您究竟如何使用它来获得结果?我所有的尝试都以 undefined 被传递给回调结束。

我曾尝试在我的内容脚本末尾返回一个值,这引发了一个Uncaught SyntaxError: Illegal return statement。我尝试使用可选代码对象参数 {code: "return "Hello";} 但没有成功。

我觉得我不理解文档中“脚本在每个注入(inject)帧中的结果”的含义。

最佳答案

chrome.tabs.executeScript()返回 Array使用运行脚本的每个选项卡/框架中的“脚本结果”。

“脚本的结果”是最后一个评估语句的值,它可以是函数返回的值(即 IIFE,使用 return 语句)。通常,如果您从 Web 控制台 (F12) 执行代码/脚本,这将与控制台显示的执行结果相同(不是 console.log(),而是结果) (例如,对于脚本 var foo='my result';foo;results 数组将包含字符串“my result”作为元素)。如果您的代码很短,您可以尝试从控制台执行它。

这里是一些示例代码,取自 another answer of mine :

chrome.browserAction.onClicked.addListener(function(tab) {
console.log('Injecting content script(s)');
//On Firefox document.body.textContent is probably more appropriate
chrome.tabs.executeScript(tab.id,{
code: 'document.body.innerText;'
//If you had something somewhat more complex you can use an IIFE:
//code: '(function (){return document.body.innerText;})();'
//If your code was complex, you should store it in a
// separate .js file, which you inject with the file: property.
},receiveText);
});

//tabs.executeScript() returns the results of the executed script
// in an array of results, one entry per frame in which the script
// was injected.
function receiveText(resultsArray){
console.log(resultsArray[0]);
}

这将注入(inject)内容脚本以获取 .innerText<body>单击浏览器操作按钮时。你需要 activeTab许可。

作为这些生成的示例,您可以打开网页控制台 (F12) 并输入 document.body.innerText;(function (){return document.body.innerText;})();查看返回的内容。

关于javascript - chrome.tabs.executeScript() : How to get result of content script?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41577988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com