Google chrome extension 如何使用tabId和chrome扩展API获取用户当前所在网站的HTML源代码?

Google chrome extension 如何使用tabId和chrome扩展API获取用户当前所在网站的HTML源代码?,google-chrome-extension,Google Chrome Extension,这是我的manifest.json: { “清单版本”:2, “名称”:“名称”, “说明”:“说明”, “版本”:“1.0”, “浏览器操作”: { “默认图标”:“icon.png”, “默认弹出窗口”:“popup.html” }, “背景”:{ “脚本”:[“background.js”], “持续”:假 }, “权限”:[ “选项卡” ] } 这是我的background.js: chrome.tabs.onUpdate.addListener((tabId,changeInfo,t

这是我的
manifest.json

{
“清单版本”:2,
“名称”:“名称”,
“说明”:“说明”,
“版本”:“1.0”,
“浏览器操作”:
{
“默认图标”:“icon.png”,
“默认弹出窗口”:“popup.html”
},
“背景”:{
“脚本”:[“background.js”],
“持续”:假
},
“权限”:[
“选项卡”
]
}
这是我的
background.js

chrome.tabs.onUpdate.addListener((tabId,changeInfo,tab)=>{
if(typeof changeInfo.url!=“未定义”&&changeInfo.url.startsWith(”chrome://newtab/“”===假){
警报(changeInfo.url);
//以某种方式获取给定tabId的页面的HTML,并存储为字符串
}
});

如果有人能在这里帮助我,我将不胜感激。正如我之前指定的,我需要用户看到的页面的确切HTML。

将您希望能够阅读的站点(或所有站点<代码>“*://*/*”)添加到manifest.json中的
权限
,然后使用chrome.tabs.executeScript将其HTML提取为字符串

  • 无法提取DOM元素或类对象,如
    Map
    。只能提取与JSON兼容的类型,如字符串、数字、布尔值、
    null
    和这些类型的数组/对象

  • 弹出窗口是一个单独的窗口,因此它有自己的单独的devtools:在弹出窗口内单击鼠标右键,然后在菜单中选择“检查”以查看console.log消息

chrome.tabs.onUpdate.addListener(异步(tabId,info,tab)=>{
if(info.url&&!info.url.startsWith('chrome')){
const html=等待getHtml(tabId);
log(html);
}
});
函数getHtml(tabId){
返回新承诺((解决、拒绝)=>{
chrome.tabs.executeScript(tabId{
代码:“document.documentElement.outerHTML”,
},结果=>
chrome.runtime.lastError
?拒绝(新错误(chrome.runtime.lastError.message))
:解析(结果[0]);
});
}

我尝试过这样做,但是
document.documentElement.outerHTML
返回的内容以
(函数(名称空间){window[namespace]=window[namespace]|{};window[namespace].responseUroles={}开头;
而不是通常的
doctype html
。为什么会发生这种情况?这是正确的结果,因为doctype不是DOM的一部分。如果需要,可以显式添加它,请参阅。