因此,当通过 ajax 检索一些 html 并将其插入到页面中.html(parseHtml(result,true));
时,结果中的 javascript 似乎是在不考虑 doc.ready 的情况下执行的。
我猜这是因为父页面本身已经“准备就绪”,并且对于通过 parseHtml 插入页面的 HTML 片段+脚本没有就绪事件的概念/实现。
我这样测试过。通常你会期望输出为 1、3、2,因为文档准备好会最后发生,但我得到的输出是 1、2、3。不过可能纯属巧合。
console.log('1');
$(document).ready(function () {
console.log('2');
});
console.log('3');
某些代码在 doc.ready 中无法正常工作以初始化 tinyMce 编辑器,但如果我在其上放置 500 毫秒延迟以假装等待 doc.ready,则它工作正常。因此,在新的 html 集成到 DOM 之前,javascript 运行得太早似乎是一个问题。显然,这个 setTimeout 是一种无法始终如一地工作的技巧。
所以我的问题是:
.html($.parseHtml 是否尊重结果中的 doc.ready,因为它等待新的 html 在 DOM 中准备好运行该脚本?是否有其他方法可以将脚本包含在 ajax html 结果中并拥有它等待运行,直到添加的 html 在 dom 中“准备好”?