gpt4 book ai didi

jquery - IE8 - 如何在内容加载后运行 jquery 代码?

转载 作者:行者123 更新时间:2023-12-01 04:18:03 25 4
gpt4 key购买 nike

我遇到一种情况,我加载一个父网页(恰好是Java JSP),其中包含我正在文档就绪函数内部使用ajax(异步)加载的内容,期望页面能够快速渲染任何内容,然后运行jquery代码在页面显示后执行异步工作。

它的工作方式与 Firefox 中的预期一样 - 页面快速渲染,然后 jquery 代码运行 ajax 调用加载其他元素。

在 IE8 中,它会等待一切完成,然后渲染完成的结果。它不尊重我的文档准备尝试。它坐在那里加载页面,同时在文档就绪部分运行我的代码,然后最终所有内容的完成结果都会显示在浏览器上。

有什么解决办法吗?有什么方法可以让 IE8 在这方面像 Firefox 一样...尽快渲染页面,然后在渲染后运行一些 jquery 代码/ajax 调用?

最佳答案

这是一个影响 IE6 7 和 8 的错误。在 IE 6 7 和 8 中,直到窗口加载事件之前或之后,jQuery 的文档就绪处理程序才会触发。在 IE9 中不会发生这种情况。

解决此问题的一种方法是自己处理该事件。

<body class="jquerydomready">
<!--[if lt IE 9]>
<script>
$('body').removeClass('jquerydomready');
</script>
<![endif]-->

然后在你的脚本中使用这个:

function init() {
// code here will be ran when document is ready
$("body").css("background-color","green");
}

if ( $("body").is(".jquerydomready") ) {
$(init); // not oldIE
}
else {
// oldIE way
document.onreadystatechange = function() {
if (document.readyState == "interactive") init();
}​
}

请记住,如果您正在执行 ajax 请求并期望它们快速发生,否则代码将无法工作,我建议迁移到不需要它们快速发生的系统,因为您不能依赖网络总是很快。

机票:http://bugs.jquery.com/ticket/12282

它目前实际上并未被标记为错误,但如果您跟踪此问题的历史记录,它在 jQuery 的开发过程中已被修复和未修复多次。

编辑:我不完全确定这个答案的 IE6 部分,我还没有用这个测试过 IE6。

这是一个支持 JSFiddle,表明它在 IE7 和 8 中等待不正确(同样未在 IE6 中进行测试)。

在上述修复之前:http://jsfiddle.net/PFWmS/

上述修复后:http://jsfiddle.net/PFWmS/7

关于jquery - IE8 - 如何在内容加载后运行 jquery 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13185689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com