2015-09-28 105 views
2

我使用的是內容腳本的瀏覽器擴展程序在跨域iframe中訪問文檔,使用此代碼訪問跨域iframe的文件:使用Chrome的擴展45.0.2454.101

document.querySelector('iframe').contentWindow.document 

這工作得很好,直到我升級到谷歌瀏覽器(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. 

在這個版本的Chrome瀏覽器有什麼改變,如何重新解決這個問題?

我的Chrome版本:

谷歌瀏覽器45.0.2454.101(正式版本)(64位) 修訂版本3b3c00f2d95c45cca18ab944acced413fb759311-裁判/分支頭/ 2454 @ {#502} 操作系統的Mac OS X眨眼537.36 (@ 3b3c00f2d95c45cca18ab944acced413fb759311)的JavaScript V8 4.5.103.35 閃存19.0.0.185用戶代理的Mozilla/5.0(Macintosh上,英特爾的Mac OS X 10_9_4) 爲AppleWebKit/537.36(KHTML,例如Gecko)瀏覽器/ 45.0.2454.101 的Safari/537.36命令行/應用程序/ Google Chrome.app/Contents/MacOS/Goog樂鍍鉻--enable-avfoundation --enable-avfoundation --flag開關,開始--flag開關端

回答

1

你將不得不通過postMessage使用cross-domain messaging

而爲了讓主網頁內容腳本注入的iframe內容腳本進行溝通,內容腳本應該在all frames注入:

"content_scripts": [{ 
    "matches": ["<all_urls>"], 
    "js": ["content.js"], 
    "all_frames": true 
}],