2011-09-10 72 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