【问题标题】:IE8 (compatibility mode) won't load my Ajax contentIE8(兼容模式)不会加载我的 Ajax 内容
【发布时间】:2010-05-27 14:21:46
【问题描述】:

我正在http://www.qxl.dk/ 上编写一个 jQuery 脚本,但我似乎无法让 IE7(或更准确地说,IE7 兼容模式下的 IE8)加载我的内容。

右侧名为“QXL Aktuelt”的侧边栏框使用 Ajax load() 从外部文件加载其 HTML 内容,然后触发自定义 jQuery 事件(“aktuelt_loaded”)启动轮播脚本(如滚动新贴纸)。

同一页面上的几个其他内容部分是通过 Ajax 加载的,它们工作得很好,所以我想知道出了什么问题。在 Firefox 3.6 和 IE8 中一切正常,但在 IE8 的兼容模式下却不行。

加载Ajax内容的脚本是(页面内嵌):

<div id="qxlaktueltHolder"></div>
<script type="text/javascript">
    $("#qxlaktueltHolder").load("/contents/dk/modul/qxlaktuelt/qxlaktuelt.htm", function() {
        $("#qxlaktueltHolder").trigger("qxlaktuelt_loaded", []);
    });
</script>
<script type='text/javascript' src='http://www.qxl.dk/contents/dk/js/jcarousellite_1.0.1.min.js'></script>
<script type='text/javascript' src='http://www.qxl.dk/contents/dk/js/qxlaktuelt_liveload.js'></script>

响应事件的外部脚本在以下文件中:

http://www.qxl.dk/contents/dk/js/qxlaktuelt_liveload.js

非常欢迎所有想法。

【问题讨论】:

  • 您的一个脚本标签中有一个language 属性。这是deprecated
  • @Marcel: True - 但这不应该影响 ajax 加载

标签: javascript jquery ajax events compatibility-mode


【解决方案1】:

编辑:

看起来您的内容正在加载中。您似乎遇到了 CSS 显示问题。使用 IE 的开发者工具,我搜索了一个在 Safari 中正确加载的 a 的 href

http://www.123hjemmeside.dk/pages/receive.aspx?target=wl&amp;partnerkey=dkqxl:Hobby_aktuelt_1

发现它与所有其他内容一起出现在页面上。

更新:

问题在于您的 #newsticker 元素。它及其所有li 元素的高度和/或宽度属性设置为0

因此,任何负责调整/显示#newsticker 的代码及其内容似乎都是罪魁祸首。


这是一个猜测,但此脚本 qxlaktuelt_liveload.js 在此之后被加载:

<script type="text/javascript">
    $("#qxlaktueltHolder").load("/contents/dk/modul/qxlaktuelt/qxlaktuelt.htm", function() {
        $("#qxlaktueltHolder").trigger("qxlaktuelt_loaded", []);
    });
</script>

因此,根据load() 需要多长时间,脚本可能会或可能不会被加载。

试试:

<script type='text/javascript' src='http://www.qxl.dk/contents/dk/js/jcarousellite_1.0.1.min.js'></script>
<script type='text/javascript' src='http://www.qxl.dk/contents/dk/js/qxlaktuelt_liveload.js'></script>
<script type="text/javascript">
    $("#qxlaktueltHolder").load("/contents/dk/modul/qxlaktuelt/qxlaktuelt.htm", function() {
        $("#qxlaktueltHolder").trigger("qxlaktuelt_loaded", []);
    });
</script>

【讨论】:

  • 实际上,这应该不是问题 - 至少它不在 IE8 或 Firefox 中(我已经使用延迟等进行了测试,并且无论首先加载什么,我使用的事件模型都有效、脚本或 Ajax 内容)。但是另一方面,兼容模式往往会随着它的发展而制定自己的规则,所以我会尝试一下。感谢回复
  • @Jens Roland - 是的,load() 是异步的,我想qxlaktuelt_liveload.js 可能有机会在响应返回之前加载。虽然,如果响应足够快,就会出现问题,因此最好以正确的顺序加载脚本文件,这样您就不会引用尚未加载的文件中的代码。
  • @Jens Roland - 在我看来,您的内容正在加载中。这似乎是一个 CSS 显示问题。我复制了在 Safari 中加载的元素的href,并在 IE 的开发人员工具中进行了搜索。果然,它就在那里,和所有其他人一起。我将更新我的答案以反映事实,并尝试查看是否可以找到 CSS 问题的快速解决方案。
  • 有趣!!!非常感谢 - 这大大缩小了范围!显示 LI 项目的代码在 jCarousel 文件中,我将尝试将其延迟到 window.load - 可能是它:)
  • Window.load 工作 - 耶!感谢您的帮助,我将您的答案标记为正确。干得好!!
【解决方案2】:

删除 JavaScript 代码中的所有控制台。由于某种原因,IE 与此中断。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-31
    • 2011-03-15
    • 2014-07-02
    • 2010-11-29
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    相关资源
    最近更新 更多