2012-11-02 134 views
0

我试图通过XHR下载一个网页,然后在浏览器中使用document.write()),但是当我这样做时,虽然显示页面,但jQuery已准备就绪( )函数不执行。如果我直接下载完全相同的页面,它会执行。是否需要做一些事情才能使页面通过XHR执行ready()函数?通过XHR的Javascript请求

+1

向我们展示一些代码 – Bergi

回答

3

不要用document.write()来替换页面内容,它会流泪。

只要找到合适的顶级元素,并使用.replaceWith()摆脱其现有的内容,包括从XHR检索到的新的内容,如:

$.get(url, function(html) { 
    $(body).replaceWith($(html).find('body')); 
}); 

注意这不会取代<head> ,也不会执行可能包含在新内容中的任何其他Javascript块。

您还可以使用​​

$(body).load(url); 
+0

取决于他的使用情况下(虽然我想不出一个好一个,太)。使用'replaceWith',DOMready将绝对不会再次触发,所以这并不能真正回答他的问题:-) – Bergi

+0

@Bergi我不确定是否有任何解决方案会再次自动启动DOMReady。 – Alnitak

+0

不是,当然,但从他使用'document.write'我断定它不会被解雇。然而,如果你加载了jQuery两次,它可能会再次触发。 – Bergi