圖片加載完畢后執行JS代碼


$("#img").load(function(){...});

這是jquery提供的一個方法,但是在IE中會有BUG,IE8不支持,IE9以上刷新后也不會執行,只有強制刷新才執行,所以不能使用這個jquery提供的方法

應該使用:

只能通過JS的onload來觸發事件,當然觸發的事件代碼中可以使用jquery代碼(但是,IE8也有BUG,普通刷新的時候圖片從緩存讀入,讀入速度比代碼更快,導致onload代碼不能運行,解決方法看繼續往下看)

document.getElementById('topBanner').onload = function() {
        var top = $('#nav').offset().top;
        $(window).scroll(function() {
            var scroll = $(document).scrollTop();
            var pos = scroll - top;
            if (scroll > top) {
                $('#nav').css('top', pos + 12 + 'px');
            } else {
                $('#nav').css('top', '12px');
            };
        });

 

徹底兼容IE8:

//首先聲明一個空的Image對象
var img = new Image();

//通過img對象調用onload事件;定義事件處理函數,並不執行(類似於在標簽內定義事件)
img.onload = function() {
    var top = $('#nav').offset().top;
    $(window).scroll(function() {
        var scroll = $(document).scrollTop();
        var pos = scroll - top;
        if (scroll > top) {
            $('#nav').css('top', pos + 12 + 'px');
        } else {
            $('#nav').css('top', '12px');
        };
    });
}

//然后再為img對象賦值src,讓這個img對象有具體的指向,才開始執行onload事件。這樣就能兼容IE8了
img.src = document.getElementById('topBanner').src;

$(window).resize(function() {
    top = $('#nav').offset().top;
    $(window).scroll(function() {
        var scroll = $(document).scrollTop();
        var pos = scroll - top;
        if (scroll > top) {
            $('#nav').css('top', pos + 12 + 'px');
        } else {
            $('#nav').css('top', '12px');
        };
    });
});
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2024 CODEPRJ.COM