2011-09-10 103 views
2

我有一個文件上傳腳本,可以使用iframe,因此不必重新加載頁面。使用live獲取加載iframe內容()

時,它的使用jQuery的.live()事件時加載的我碰到的關於從 iframe中檢索數據一個問題,像這樣的:

$("iframe").live("load", function() { 
    console.log($(this).contents().find("body").html()); 
}); 

此事件,甚至不火(我什麼也沒得到在Firebug ),那麼在我的文件上傳腳本中加載了一些內容後,如何才能獲取iframe的HTML?我想這樣做,這樣我就可以獲得運行在服務器上的PHP腳本的返回狀態。

我必須使用.live(),因爲這些元素是動態添加的,這意味着傳統的​​將不起作用。

回答

6

從jQuery文檔:

注:.live()和.delegate()方法不能用於檢測iframe的加載事件。加載事件不能正確地向上冒泡父文檔,並且event.target未由Firefox,IE9或Chrome設置,這是做事件委託所必需的。

http://api.jquery.com/load-event/

你能提供你想要做一點更多的信息,應該可以通過使用iFrame的負載抓事件,但沒有。

+0

因爲沒注意到我而感到羞恥。謝謝。我想要做的就是檢測iframe中運行的文件上傳腳本何時完成,以便我可以對其所吐出的數據執行某些操作,比如「錯誤」 - >打印錯誤消息,「成功」 - >打印成功消息。 – Bojangles

+0

iFrame中的頁面是否發回自己或發佈到其他頁面?我想我得到的是iFrame URL是否發生變化,因爲您可能會監視此變化?你有一個測試網址,我們可以查看一下,以便更好地瞭解你在做什麼?或者你可以發佈更多的HTML? – timothyclifford

+0

那麼,iframe首先沒有URL參數,然後由jQuery給出一個。我可以使用'setInterval()'來檢測更改,但如果可能的話,我寧願使用本機事件。 – Bojangles