浏览器扩展是否可以读取网页的DOM而无需在选项卡中打开它?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浏览器扩展是否可以读取网页的DOM而无需在选项卡中打开它?相关的知识,希望对你有一定的参考价值。

是否有基于浏览器的API可以加载/读取网页的DOM而无需在选项卡中打开它?

鉴于Chrome扩展可以制作跨源XMLHttpRequest,我是否可以利用它来读取其他网页的DOM而无需在标签中打开它们?

答案

这适用于firefox ..还没有尝试过chrome:

let xhr = new XMLHttpRequest();
xhr.onload = () => {
    let doc = xhr.responseXML;
    //todo...
}
xhr.onerror = () => console.error('error');
xhr.open("GET", url);
xhr.responseType = "document";
xhr.send();

这为您提供了一个文档,可以像普通的javascript文档一样使用。

编辑: 请记住,有些网页使用javascript创建或修改dom。上面的代码只会给你原始html的dom,好像没有运行javascript!

另一答案

webextension的背景页面是一个网页,可以包含iframe。因此,您应该能够将有问题的页面加载到该框架中,并使用内容脚本对其进行检测,而无需打开选项卡。

以上是关于浏览器扩展是否可以读取网页的DOM而无需在选项卡中打开它?的主要内容,如果未能解决你的问题,请参考以下文章

如何在新选项卡中打开 vue 组件而不通过 vue 路由器加载页面?

CSS未显示在谷歌浏览器的覆盖选项卡中

Chrome 扩展程序 - 在新打开的选项卡中不起作用

IE8的浏览器,在哪里可以设置分页显示?

是否可以通过扩展从另一个进程外部触发 Google Chrome 中的 Javascript?

在页面之间重用websockets?