0

我试图通过 XHR 下载一个网页,然后在浏览器中渲染它(使用 document.write()),但是当我这样做时,虽然页面显示了,但 jQuery 的 ready() 函数并没有执行。如果我直接下载完全相同的页面,它会执行。是否需要做一些事情来使通过 XHR 传递的页面执行 ready() 函数?

4

1 回答 1

3

不要document.write()用来替换页面内容,会以泪水收场。

只需找到一个合适的顶级元素并使用.replaceWith()它来摆脱其现有内容并包含从 XHR 检索到的新内容,例如:

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

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

你也可以使用.load()

$(body).load(url);
于 2012-11-02T14:33:25.047 回答