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


107

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

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


1
常にコードを実行できますwindow.frames[x]。必要なコマンドを追加するだけです。IEwindow.frames[0].runFunction()
LoveAndCoding

1
@Ktash、おそらくあなたはそれを答えにしたいと思いますか?
Muhd

IEで同じようにするにはどうすればよいですか?要素が内部のIFRAMEにある場合、コンソールウィンドウで$を使用して要素を選択するのは非常に困難です。助けてください。
タレカフ

回答:


149

Chrome 15では、コンソールのスコープを変更できます。コンソールの下部にある、コンソールのクリアボタンの横に、<top frame>利用可能なフレームのリストを表示するメニューがあります。

ここに画像の説明を入力してください

Firefoxには、現在開発中の同様の機能があります。

ここに画像の説明を入力してください


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

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

6
これと同じことを行うためにコンソールでコードを実行できますか、それともフレームセレクターをクリックする必要がありますか?
bodine 2013

@bodine-コンソールコマンドから実行する方法を見つけましたか?
アーティ

1
このドロップダウンは現在、コンソールの下部ではなく上部にあることに注意してください。
Muhd、2014年

1
Chrome 38ではこれが表示されません。Chromeでこれを行う方法をすぐに理解できませんでした。代わりにFirefoxでcd(frames [<index number>])を使用しました。
Akrikos

1
残念だ。フレームのコンテンツが変更された場合、選択したフレームは保持されません。「トップフレーム」に戻ります
bryc 2015

22

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

window.frames[0].runFunction()

FireBugがあなたの選択の武器であるならば、素晴らしい代替案。ありがとう。
Surreal Dreams

1
jQueryコマンドなどの関数の外でコードをどのように実行しますか?または、あるフレームの下でDOM要素への参照を取得したい場合は、その要素に対してコードを実行しますか?
デビッド

だから、例として次のようになりますwindow.frames[0].alert()
Shayan

6

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

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

ここに画像の説明を入力してください


4

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

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


4

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

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

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

詳細はこちら


それはまさに私が探していたものです。(Firefoxで動作します)ありがとうございます。
user2410595 14

4
cd(document.getElementsByTagName('iframe')[0]);

2
Stack Overflowへようこそ!投稿を編集して、コードの機能と問題を解決する理由を詳しく説明してください。(たとえそれが機能していても)ほとんどコードのみを含む回答は、通常、OPが問題を理解するのに役立ちません。
SuperBiasedMan

ありがとう!これは、Firefoxがこれを行うには奇妙な方法ですが、「cd(iframe)」は、コンテキストを切り替えるためにコンソールに入力するものです。私はあなたに+1 b / cを与えました、あなたは私にたくさんのヘッドバンギングを節約しました、しかしあなたは本当にこの投稿を磨いて説明するべきです!
スコットスミス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.