Google chrome extension Chrome扩展:将当前选项卡附加到弹出窗口,然后遍历其DOM
我正在制作谷歌浏览器的扩展,遇到了一个问题 我正试图上传和搜索popup.html中的DOM 下面是我如何获得当前选项卡(我在某处找到了脚本,信用不属于我): 我的问题是:我需要遍历响应的DOM。当尝试手动执行此操作时,我无法执行,因为由于某些原因,响应变量现在未定义,因此使用控制台不是一个选项。 当试图提醒html文件中的响应时,它作为一个对象出现。然后,我试图在响应中导航,就像它是“document”对象一样,但也没有运气Google chrome extension Chrome扩展:将当前选项卡附加到弹出窗口,然后遍历其DOM,google-chrome-extension,Google Chrome Extension,我正在制作谷歌浏览器的扩展,遇到了一个问题 我正试图上传和搜索popup.html中的DOM 下面是我如何获得当前选项卡(我在某处找到了脚本,信用不属于我): 我的问题是:我需要遍历响应的DOM。当尝试手动执行此操作时,我无法执行,因为由于某些原因,响应变量现在未定义,因此使用控制台不是一个选项。 当试图提醒html文件中的响应时,它作为一个对象出现。然后,我试图在响应中导航,就像它是“document”对象一样,但也没有运气 任何帮助都将不胜感激。我相信弹出窗口的沙盒方式与背景页面相同,因此您
任何帮助都将不胜感激。我相信弹出窗口的沙盒方式与背景页面相同,因此您需要使用内容脚本来访问页面DOM 您可以使用
chrome.tabs.executeScript
插入内容脚本,在内容脚本中处理DOM遍历,然后使用消息传递API将所需信息从内容脚本传递回弹出窗口
如果您提供有关您试图解决的问题的更多信息,我可以尝试对此进行详细说明。您可以通过将null作为窗口id传递给getSelected来获取弹出窗口的selected选项卡。()在弹出窗口中,您可以侦听扩展事件并执行脚本将内容推送到弹出窗口:
chrome.extension.onRequest.addListener(
function(request, sender, sendResponse) {
if (request.action == "content")
{
console.log('content is ' + request.content.length + ' bytes');
}
});
chrome.tabs.getSelected(null, function(tab) {
chrome.tabs.executeScript(tab.id, { file: 'scripts/SendContent.js' } );
});
最后是内容脚本。。。我的扩展文件夹中有一个名为“scripts/SendContent.js”的脚本,但该脚本非常简单,您可以将代码放在code属性中,而不是将名称放在传递给executeScript的对象的file属性中来执行它:
console.log('SendContent.js');
chrome.extension.sendRequest( {
action: "content",
host: document.location.hostname,
content: document.body.innerHTML
}, function(response) { }
);
结果:
POPUP: content is 67533 bytes
如果遇到问题,请使用console.log()并右键单击页面或浏览器操作来检查它,并在控制台上读取消息(或从此处调试脚本)
POPUP: content is 67533 bytes