2010-03-22 62 views
13

我正在研究一個web應用程序,並使用jQuery插件Colorbox彈出一個窗口,該窗口呈現用於編輯父窗口元素的窗體。我使用Firebug來調試我的Javascript和jQuery,並且我注意到我無法使用jQuery控制檯命令行在我的Colorbox HTML表單中選擇一個元素。例如:iFrame中的Firebug和jQuery選擇器

$ date = $(「#date」);

當從jQuery控制檯命令行運行時,即使我有一個id =「date」的輸入元素,並且Firebug「元素檢查」指針可以在iFrame中查找元素,也不會返回任何內容。有沒有辦法讓Firebug的控制檯訪問iFrame中的元素?

感謝您的幫助! 道格

+0

你能否澄清一下,當腳本部分頁面正常工作時,腳本是否正常工作,但不通過控制檯運行? – 2010-03-22 20:06:28

+0

您是否嘗試過'var date = $(「#date」);' – ant 2010-03-22 20:18:44

+0

Javascript在Colorbox中工作,只是我無法在Firebug控制檯中使用jQuery處理iFrame中的元素。 – 2010-03-24 12:52:26

回答

16

您需要通過iframe的文件作爲您選擇一個背景下,因爲IFRAME有自己的分離DOM樹:

$('#date', $('iframe').get(0).contentDocument); 

爲了獲得iframe的內容的訪問,它必須從相同的加載域作爲父文檔。


只是在此詳述,.contentDocument財產在Chrome(和FF)的作品,但不是在IE < 8.您必須使用.document

+0

Yaggo, 感謝您的回覆,您能再詳細一點嗎?我不是通過訪問iFrame的上下文來「獲取」你的意思。 謝謝, Doug – 2010-03-24 12:53:23

+0

只是在這裏詳細說明,'.contentDocument'屬性在Chrome(和FF)中工作,但不在IE中。你必須使用'.document'。 – Aliostad 2011-12-07 09:36:18

21

您正在尋找的cd方法,這裏記載:http://getfirebug.com/wiki/index.php/Command_Line_API

這裏有一個書籤我用自動跳進了iframe任何的iFrame Facebook應用程序。它應該提供足夠的示例來修改以供您使用。

javascript:with(_FirebugCommandLine){cd($$(".canvas_iframe_util")[0].contentWindow)} 

注意with一般是不好的做法,但是這是Firebug的字面如何執行你鍵入到控制檯上,所以我模仿這一點。

運行此操作後,您鍵入到命令行中的所有內容都將在iframe的上下文中執行。

+3

這是天才。感謝您分享該片段。它使Facebook的iframe應用程序開發更容易。 – 2010-07-25 22:34:39

+4

澄清,如果你在Firebug控制檯,所有你需要的是cd(iframedom.contentWindow) – 2010-08-26 17:34:48

+0

是的,雖然小書籤是一個超級方便的工具。 – bcherry 2010-08-27 02:41:17