2011-11-01 75 views
89

我想更改在webkit開發人員工具/ firebug控制檯中執行的JavaScript的上下文,以執行其代碼,就像它從頁面上的iframe中運行一樣。有沒有辦法在javascript控制檯中將上下文更改爲iframe?

我知道我可以通過在單獨的頁面上打開iframe中的頁面來做到這一點,但我想在與父框架交互的位置運行代碼。

+1

你總是可以用'window.frames [x]'方式執行代碼。只需追加任何你想要的命令。 I.E. 'window.frames [0] .runFunction()' – Ktash

+1

@Ktash,你可能想讓這個答案? – Muhd

+0

我如何在IE中做同樣的事情?如果元素位於內部IFRAME中,我發現使用$在控制檯窗口中選擇一個元素非常困難。請幫忙。 – tarekahf

回答

123

Chrome 15允許您更改控制檯的範圍。在控制檯上,旁邊的清除控制檯按鈕的底部,有一個菜單,上面寫着<top frame>,這將給可用幀列表:

enter image description here

Firefox有一個similar feature目前正在開發中:

enter image description here


您也可以跨框架using the command line導航

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

非常好,甚至跨域的作品。正是我想要的。 – Muhd

+5

我可以在控制檯中執行代碼來完成同樣的事情,還是必須單擊幀選擇器? – bodine

+0

@bodine - 你有沒有找到一種方法從控制檯命令中完成它? – arty

20

您可以使用window.frames[x]功能執行的代碼。例如,

window.frames[0].runFunction() 
+0

如果FireBug是你選擇的武器,一個不錯的選擇。謝謝。 –

+0

你會如何執行jQuery命令之類的函數之外的代碼?或者,如果您想在某個框架下獲取DOM元素的引用,那麼針對該元素執行代碼? – David

4

對於螢火蟲解決方案,請參閱this answer關於另一個SO問題。但是,不像丹尼斯的Chrome解決方案那樣可以跨域使用。

編輯:更新版本的螢火蟲他們可能有固定的跨域問題。

3

默認情況下腳本語句和命令的執行是在頂層窗口的上下文中完成的。如果您使用的是幀,請使用「cd()」控制檯命令。

cd() 不帶參數調用cd()會返回到頂層窗口。

cd(窗口) 允許您將命令行表達式評估從網頁的默認頂級窗口更改爲框架的窗口。

更多信息,here

+1

似乎只與IE相關,但不適用於webkit .. – Cherniv

+0

這正是我所期待的。 (它適用於Firefox) 謝謝。 – user2410595

3
cd(document.getElementsByTagName('iframe')[0]); 
+1

歡迎來到Stack Overflow!請考慮編輯您的帖子,以添加更多關於您的代碼的解釋以及爲什麼它可以解決問題。一個主要包含代碼的答案(即使它正在工作)通常不會幫助OP瞭解他們的問題。 – SuperBiasedMan

+0

謝謝!對於firefox來說,這是一種奇怪的方式,但我想「cd(iframe)」是您在控制檯中輸入以切換上下文的內容。我給了你一個+1 b/c你爲我節省了大量的頭撞,但你應該真正拋光這個帖子並解釋它! –

5

在今天的Chrome(52版),所有你需要做的是在開發者工具「元素」選項卡中選擇iframe中。您在JS控制檯中運行的任何內容都將自動運行在所選iframe的上下文中。

例如,在這裏我選擇了一個iframe,當我鍵入document.location.pathname到控制檯返回,而不是從地址欄中的URL的iframe src屬性,:

enter image description here

相關問題