0

我有一个使用 Ajax 加载 JSON 内容的微型站点,它第一次在 IE7 和 IE8 中运行,但是如果我刷新这些浏览器它会失败,我已经签入了提琴手并且我没有收到任何错误。可能是某处的代码错误吗?

var firstBackgroundImage = new Image();
                firstBackgroundImage.src = "img/bg-img.jpg";        
                firstBackgroundImage.onload = function () {
                    $('#loading-image').hide();
                    $(".wrap").fadeIn(300);
                    loadContent();
                };

function loadContent(){ 
    $.ajax({
        url: "json/" + language + "/content.json",
        data: "nocache=" + Math.random(),
        type: "GET",
        cache : false,
        contentType: "application/json",
        dataType: "json",
        success: function(source){
            data = source;
            showStartpage(data);
            showInfo(data);
        },
        error: function(data){
            alert("Failed to load content");
        }
    }); 

}

没有出现“加载内容失败”警报,它只是显示了我的加载图像,可能存在任何可能的故障吗?有人遇到过同样的问题吗?

谢谢!

4

1 回答 1

2

它第一次工作是因为 Internet Explorer 没有从缓存中加载图像,因此load事件在您firstBackgroundImage.onload = ...设置事件处理程序的行之后触发。但是,在随后的页面加载中,它使用的是图像的缓存版本,因此该load事件在您为其设置事件处理程序之前触发。

只需更改这两行的顺序。设置load事件处理程序,然后设置src图像的属性:

var firstBackgroundImage = new Image();
firstBackgroundImage.onload = function () {
    $('#loading-image').hide();
    $(".wrap").fadeIn(300);
    loadContent();
};
firstBackgroundImage.src = "img/bg-img.jpg";      
于 2013-04-17T09:58:13.803 回答