やりたいこと:javascriptからiframeの内容を取得したい
- iframe内容特定な要素をjavascriptで取得して、親ウィンドにセットしたいです
- 親ウィンドと子ウィンド間のやり取りをします
問題点:ブラウザがjsからiframeへのアクセスをブロック
- セキュリティポリシーとして、ブラウザがjsからiframeへのアクセスをブロックしています
- iframeの参照先が親ウィンドと違うケースが多いので、jsがiframeの要素をいじることができれば、セキュリティ上の問題があります
- jsからiframeの内部にアクセスすると以下のエラーが発生
Blocked a frame with origin from accessing a cross-origin frame.
- 基本としてjsからiframe内部へのアクセスができないです。
回避方法:ブラウザのセキュリティポリシーを一時的に無効化
- GoogleのChromeブラウザを例にして説明します
- クロームを起動するときに、セキュリティポリシー無効化することができます
// Windows環境で以下の命令でChromeを起動 chrome.exe --user-data-dir="C://Chrome dev session" --disable-web-security
- Chromeの作業ディレクト:"C://Chrome dev session"を必要に応じて設定を変えることができます
- 上記方法で起動したブラウザ内でjsからiframe内部へのアクセスができます
- 開発目的で、あくまで一時的な方法となります
- お客さんが側ではこの方法でブラウザの起動はしません