我试图通过XHR下载一个网页,然后在浏览器中渲染它(使用document.write()),但是当我这样做时,虽然显示了页面,但是jQuery的ready()函数没有执行。如果我直接下载完全相同的页面,它会执行。是否需要做一些事情来使通过XHR传递的页面执行ready()函数?
答案 0 :(得分:3)
不要使用document.write()
替换页面内容,它会以泪流满面。
找到合适的顶级元素并使用.replaceWith()
来删除其现有内容并包含从XHR检索到的新内容,例如:
$.get(url, function(html) {
$(body).replaceWith($(html).find('body'));
});
请注意,这不会替换<head>
,也不会执行可能包含在新内容中的任何其他Javascript块。
您也可以使用.load()
$(body).load(url);