Chrome扩展程序:在background.html中访问跨源iframe

时间:2016-10-25 19:46:45

标签: javascript google-chrome iframe google-chrome-extension

由于页面的复杂性(XHR实际上不是一个选项),我正在尝试编写一个扩展程序,用于删除需要作为网页加载的网站。我提出的最佳解决方案是通过放置在background.html中的iframe进行抓取。当满足目标页面上的某些条件时,扩展程序将为用户提供通知。

几年前在这里发布了一个非常类似的问题:

Chrome extension: loading a hidden page (without iframe)

我可以通过removing the x-frame-options header在后台页面中加载目标网页的iframe,如上面问题的回答中所示。当页面加载到浏览器选项卡/窗口中时,我可以通过内容脚本来刮取数据。但是,我希望能够从后台脚本执行此操作,当然,由于跨源安全性,它无法直接访问iframe contentDocument。

不幸的是,尽管iframe正好从目标页面加载内容,但它并没有加载内容脚本。似乎background.html根本不加载任何内容脚本。这是有道理的,因为当扩展开始加载彼此的内容脚本时,事情可能会变得疯狂。

是否有一个清单选项允许特定内容脚本在后台页面的iframe中运行?

如果没有,有没有办法放宽扩展中的跨域安全性来访问iframe contentDocument?

请注意,使用--disable-web-security chrome命令行开关不是一个选项。我希望非技术人员能够使用该扩展,并且我不希望要求用户禁用Web安全性来使用它。

如果没有办法在后台页面中运行内容脚本或放宽安全性,那么在不使用XHR的情况下,还有哪些其他可能性可以使用chrome扩展来抓取页面DOM?当然必须有办法。

0 个答案:

没有答案