web-dev-qa-db-ja.com

javascriptコンソールでコンテキストをiframeに変更する方法はありますか?

Webkit開発者ツール/ firebugコンソールで実行されるjavascriptのコンテキストを変更して、ページ上のiframe内から実行されているようにコードを実行したいと思います。

別のページのiframeでページを開くことでこれを実行できることは知っていますが、親フレームと対話するコードを実行したいと思います。

102
Muhd

Chrome 15では、コンソールの範囲を変更できます。コンソールの下部のコンソールのクリアボタンの横に、<top frame>使用可能なフレームのリストを提供します。

enter image description here

Firefoxには 類似の機能 が現在開発中です:

enter image description here


フレーム間を移動することもできます コマンドラインを使用

var frame = document.getElementById("frame1").contentWindow;
cd(frame);
141
Dennis

<iframe>機能を使用して、window.frames[x]sでコードを実行できます。例えば、

window.frames[0].runFunction()
21
LoveAndCoding

今日のChrome(バージョン52)では、開発ツールの[要素]タブでiframeを選択するだけです。JSコンソールで実行するものはすべてコンテキストで自動的に実行されます選択したiframeの。

たとえば、ここでiframeを選択し、document.location.pathnameをコンソールに入力すると、アドレスバーのURLではなく、iframeのsrc属性が返されます。

enter image description here

6
dpercy

Firebugソリューションについては、別のSO質問で this answer を参照してください。ただし、デニスのChromeソリューションのようにクロスドメインでは機能しません。

編集:firebugの新しいバージョンでは、クロスドメインの問題が修正されている可能性があります。

4
Muhd

デフォルトでは、スクリプトステートメントとコマンドの実行はトップレベルウィンドウのコンテキストで実行されます。フレームを使用している場合は、「cd()」コンソールコマンドを使用します。

cd()パラメータなしでcd()を呼び出すと、トップレベルウィンドウに戻ります。

cd(window)コマンドライン式の評価を、Webページのデフォルトのトップレベルウィンドウからフレームのウィンドウに変更できます。

詳細は、 こちら

3
Sebastian
cd(document.getElementsByTagName('iframe')[0]);
3
Andreyka Bonart