在 Chrome 45.0.2454.101 中使用扩展访问跨域 iframe 的文档

you*_*nda 10 cross-domain google-chrome-extension

我在 Chrome 扩展程序中使用内容脚本来访问跨域 iframe 中的文档,使用以下代码:

document.querySelector('iframe').contentWindow.document
Run Code Online (Sandbox Code Playgroud)

这一直很好,直到我升级到最新版本的 Google Chrome(45.0.2454.101 64 位),它在访问 iframe 时报告以下安全错误:

Uncaught SecurityError: Blocked a frame with origin
"http://www.miercn.com" from accessing a frame with origin
"http://pos.baidu.com". Protocols, domains, and ports must match.
Run Code Online (Sandbox Code Playgroud)

这个版本的 Chrome 有什么变化以及如何解决这个问题?

我的 Chrome 版本:

谷歌浏览器 45.0.2454.101 (??) ?64 ?? ???3b3c00f2d95c45cca18ab944acced413fb759311-refs/branch-heads/2454@{#502} ???? Mac OS X 闪烁 537.36 (@3b3c00f2d95c45cca18ab944acced413fb759311) JavaScript V8 4.5.103.35 Flash 19.0.0.185 ???? Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36 ??? /Applications/Google Chrome.app/Contents/MacOS/Google Chrome --enable-avfoundation --enable-avfoundation --flag-switches-begin --flag-switches-end

wOx*_*xOm 7

您必须通过postMessage使用跨域消息传递

为了让主页上的内容脚本与注入到 iframe 中的内容脚本进行通信,应该将内容脚本注入到所有框架中

"content_scripts": [{
    "matches": ["<all_urls>"],
    "js": ["content.js"],
    "all_frames": true
}],
Run Code Online (Sandbox Code Playgroud)