当前位置: 首页 > 面试题库 >

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

祝高阳
2023-03-14
问题内容

我有一种情况,我加载了一个父网页(可能是Java
JSP),该网页包含我正在使用文档就绪函数内的ajax(asynch)加载的内容,希望该页面能够快速呈现任何内容,然后运行jQuery代码以页面显示后执行紧急工作。

它按照预期在Firefox中正常工作-页面快速呈现,然后jquery代码运行ajax调用并加载其他元素。

在IE8中,它等待直到一切完成,然后呈现完成的结果。它不支持我的文档准备尝试。它位于此处,在“文档准备就绪”部分中运行我的代码时加载页面,然后最终所有内容的完成结果都会显示在浏览器中。

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


问题答案:

这是一个会影响IE6 7和8的错误。jQuery的文档就绪处理程序只有在IE 6 7和8中的窗口加载事件之前或之后才会触发。在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



 类似资料:
  • 我试图在一个网站上获得一个内容列表(若有人感兴趣的话,这一个)。布局最近发生了变化,现在他们不会一次加载所有内容,而是使用magic(可能是js)。我目前正在使用JSoup分析HTML,但我愿意接受建议。 这就是我得到的: 实现此目的的代码: 这是我想看到的(复制从检查元素后,页面加载了所有的内容): 谷歌帮不了什么忙,因为与微调器等相关的所有内容都与javascript有关。 解决方案: 由于J

  • 问题内容: 我正在使用.load()将静态HTML文件拉到我的主HTML页面上。我编写的脚本和选择器存在于: 但是它们不适用于AJAX加载的内容。我读到这是因为我正在使用的选择器不可用。 有一个更好的方法吗?将脚本添加到window.load函数也不起作用: 问题答案: ajaxComplete()

  • 我用jQuery将一些包含数学的内容加载到html文件中。现在我想让Mathjax排版这个新内容,但它不起作用。这就是我的JavaScript代码的样子 但它只加载内容,不应用MathJax。有什么建议说明它为什么不起作用吗? 编辑我添加了第二个按钮,带有第二次单击功能,运行以下脚本 如果我单击第一个按钮,它将加载新内容,而不应用MathJax。如果现在单击第二个按钮,它会将MathJax应用于新

  • 问题内容: 在此页面上,我有一个jQuery弹出窗口和可调整大小的缩略图。如果我将鼠标悬停在缩略图上,则图像的大小将完美调整。另外,当我单击页脚中的黄色大电视按钮“ QuickBook TV”时,弹出窗口会按照我的意愿完美显示。 但是,当我单击“下一步”或“上一步”按钮时,将使用AJAX加载新内容,而jQuery不再对弹出窗口或缩略图起作用。我搜索了许多论坛来寻找有关此问题的信息,但是由于对jQu

  • 问题内容: 我的问题: 我有index.html: 是这样的: 问题很简单。 当我按下按钮时,我想动态加载内容,而无需刷新。 提前致谢!请发表评论以进行任何必要的澄清。 编辑,更详细的解释: 我不确定自己是否很清楚(或者我可能不了解我缺乏技术技能的答案),所以我再说一遍。(改写) 我有一个带有提交按钮的HTML,该按钮通过POST方法发送变量。 PHP文件使用此变量,并在经过一定过程后插入并更新M

  • 问题内容: 我有一个-link元素,该元素具有指向页面的href链接,但是我必须使用Ajax从href -url加载该内容,而不是将用户重定向到该页面。如何修改链接以仅从该链接加载内容,以便可以将该内容注入当前页面? 我做了这个,但是没用。 问题答案: 的负载功能并不旨在收集请求响应,该功能用于负载HTML从远程文件并注入到一个DOM元素,例如: 如果处理锚元素的单击事件,则应防止浏览器跟随链接h