2016-10-14 8 views
1

Googleハングアウトで自動ダイヤルのクローム拡張機能を作成しようとしているため、会議ごとに会議ブリッジ番号を入力する必要はありません。それらを保存してもいいですか...とにかく、私はコンセプトの仕事をしていますが、私はクロスオリジンの問題を回避しようとしています。クロム拡張用のiFrameのクロスオリジンの問題

Googleハングアウトで電話をかけたら、連絡先ページから電話をかけたい番号を入力します。 Enterキーを押すか「電話をかける」をクリックすると、ダイヤラがiFrameに読み込まれます。私のクロム拡張機能では、フレームはドメイン "plus.google.com"の下にありますが、スクリプトは "hangouts.google.com"からアクセスしていますが、iFrameへの参照を取得できます。

私は両方ともgoogle.comの親ドメインの下にあるので、フレームのcontentWindow内のダイヤラーボタンで.click()を実行するためにクロムエクステンションのアクセスを許可しようとしています。

chrome拡張機能のコンテンツスクリプトでは、親ページからiframe要素を選択し、iframeという変数に設定します。

var iframe = $("div iframe")[0]; 

私は問題なく

document.domain = "google.com"; 

を設定することができますが、私は

iframe.contentWindow.document.domain = "google.com"; 

を実行しようとするとき、私は、私は、コンテンツのセキュリティを緩和しようとした

content.js:3 Uncaught SecurityError: Blocked a frame with origin 
"https://hangouts.google.com" from accessing a frame with origin 
"https://plus.google.com". The frame requesting access set "document.domain" to 
"google.com", but the frame being accessed did not. Both must set 
"document.domain" to the same value to allow access. 

を取得私はそれをやっていないかもしれないght:

"content_security_policy": "script-src 'self' https://google.com; object-src 'self'", 
    "permissions": [ 
    "http://*/", 
    "tabs" 
    ] 

これを回避する方法はありますか?

答えて

0

この場合、権限の追加やCSPの緩和は役立ちません。

ドキュメントのクロスドメインを操作するには、iframeにコンテンツスクリプトの2番目のインスタンスが必要です。

コンテンツスクリプトに"all_frames": trueを注入してください。

iframe.contentWindow.postMessageを使用してコンテンツスクリプト間で通信することができます。

関連する問題