gpt4 book ai didi

javascript - Chrome Extension API : chrome. tabs.captureVisibleTab 在后台页面到内容脚本

转载 作者:行者123 更新时间:2023-11-29 16:14:37 27 4
gpt4 key购买 nike

我的总体目标是通过后台页面截屏,使用:

http://developer.chrome.com/extensions/tabs.html#method-captureVisibleTab

并将它传递给内容脚本,这样我就可以使用页面的 HTML DOM 来分析屏幕截图并按照我想要的方式进行切割。

但是,我似乎无法使用消息传递将 dataUrl 传递回内容脚本:

http://developer.chrome.com/extensions/messaging.html

我尝试了 JSON.stringify() 但没有成功。

这工作得很好:

background.js

chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
sendResponse({imgSrc:'hello'});
}
);

我将代码切换为此,但没有任何通过:

background.js

chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
chrome.tabs.captureVisibleTab(
null,
{},
function(dataUrl)
{
sendResponse({imgSrc:dataUrl});
}
)
}
);

我唯一能证明后台页面真的在截图,我能做到

chrome.tabs.captureVisibleTab(null,{},function(dataUrl){console.log(dataUrl);});

我明白了

“data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAA....等...”

登录background.html,有效

我的问题是:如何将此 URL 发送到内容脚本?

我不想在后台页面上执行所有逻辑,因为这些逻辑无法控制实际可见页面上的任何内容。

最佳答案

使用 chrome.tabs.sendMessage 并确保返回 true,而不是事件监听器

背景页面:

chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
chrome.tabs.captureVisibleTab(
null,
{},
function(dataUrl)
{
sendResponse({imgSrc:dataUrl});
}
);

return true;
}
);

内容脚本

chrome.runtime.sendMessage({msg: "capture"}, function(response) {
console.log(response.dataUrl);
});

关于javascript - Chrome Extension API : chrome. tabs.captureVisibleTab 在后台页面到内容脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18794407/

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