Chrome開発者ツールを使用したiframeのデバッグ


296

Chromeデベロッパーコンソールを使用してアプリ内の変数とDOM要素を確認したいのですが、アプリはiframe(OpenSocialアプリであるため)内に存在します。

だから状況は:

<containing site>
 <iframe id='foo' src='different domain'>
  ... my app ...
 </iframe>
</containing site>

その中で起こっていることiframeに開発者コンソールからアクセスする方法はありますか?私がしようとするとdocument.getElementById("foo").something、おそらくそれがiframe別のドメインにあるため、機能しません。

が含まれているサイトと通信できるようにする必要があるiframeため、新しいタブでコンテンツを開くことができませんiframe

回答:


546

Chromeのデベロッパーツールでは、上部にあるExecution Context Selector(h / t felipe-sabino)というバーが[要素]、[ネットワーク]、[ソース...]タブのすぐ下にあり、現在のタブのコンテキストに応じて変化します。[コンソール]タブでは、そのバーにドロップダウンがあり、コンソールが動作するフレームコンテキストを選択できます。このドロップダウンでフレームを選択すると、適切なフレームコンテキストが表示されます。:D

Chrome v59 Chromeバージョン59

Chrome v33 Chromeバージョン33

Chrome v32以下 Chromeプレバージョン32


1
これはChrome 30.0.1599.101で壊れているようです-コード、変数などを使用する試みはすべて、iframeを選択した後も親コンテキストからです
Kevin

3
インターフェイスはバージョン33で変更されました。これが今どこにあるのかわかりません。
Malcr001 2014

3
これのキーボードショートカットはありますか?
Vlas Bashynskyi 2016

2
このタブは"実行コンテキストセレクタ"と呼ばれていることを覚えておいてください。それは、それを見つけるのに少し時間がかかったからです:)
Felipe Sabino

1
これは私にはうまくいきませんでした。おそらく拡張機能でiframeを使用しているためです。私はchrome:// extensionsに移動し、ローカルに解凍された拡張機能の背景リンクの横にあるiframeリンクをクリックする必要がありました。
AlexMorley-Finch

9

現在、コンソールでの評価は、ページのメインフレームのコンテキストで実行され、メインフレーム自体と同じクロスオリジンポリシーに準拠しています。これは、メインフレームがアクセスできない限り、iframe内の要素にアクセスできないことを意味します。ただし、スクリプトパネルを使用してブレークポイントを設定し、コードをデバッグすることができます。

更新:これはもう当てはまりません。Metagrapherの回答を参照してください。


3
この問題はまだ未解決です...ほぼ1年後。
グレンリトル

2

私のかなり複雑なシナリオでは、Chromeでこれを行う方法の受け入れられた答えは私にとってはうまくいきません。代わりに、Firefoxデバッガ(Firefox開発者ツールの一部)を試してみると、iFrameの一部を含むすべての「ソース」が表示されます。


スクリーンショットを追加できますか?見つけられませんSources
Shayan

1

iFrameが次のようにサイトを指す場合:

<html>
  <head>
    <script type="text/javascript" src="/jquery.js"></script>
  </head>
  <body>
    <iframe id="my_frame" src="/wherev"></iframe>
  </body>
</html>

このような方法でiFrame DOMにアクセスできます。

var iframeBody = $(window.my_frame.document.getElementsByTagName("body")[0]);
iframeBody.append($("<h1/>").html("Hello world!"));
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.