iT邦幫忙

0

為什麼 onload 會在 safari 失效?

$(document).ready(function(){
    $(".pageloading").show();

    $(window).on("load", function() {
    $(".pageloading").fadeOut();
  });
});

google chrome可以,會 $(".pageloading").fadeOut();
但safari網頁即使完成load,依然不會啟用 $(".pageloading").fadeOut();
這要怎麼解?
手機safari甚至也可以....

1 個回答

1
暐翰
iT邦大師 9 級 ‧ 2018-03-29 13:27:58
最佳解答


windows load事件在
document ready事件之前

所以你想要的效果是消失後馬上顯現
然後現在問題出在safari消失效果沒有?
這段代碼其實照邏輯推下來你只需要

$(document).ready(function () {
    $(".pageloading").show();
    console.log("document ready");
});

可以用下面代碼測試一下,你的問題應該出在時間的認知

$(document).ready(function () {
    $(".pageloading").show();
    console.log("document ready");
});
$(window).on('load', function(){ 
    $(".pageloading").fadeOut();
    console.log("window load");
});
看更多先前的回應...收起先前的回應...
ccutmis iT邦研究生 5 級 ‧ 2018-03-29 14:25:10 檢舉

/images/emoticon/emoticon12.gif

asys0512 iT邦新手 1 級 ‧ 2018-03-29 15:58:17 檢舉

呃?還是一樣耶

暐翰 iT邦大師 9 級 ‧ 2018-03-29 16:04:37 檢舉

打開chrome按F12看一下log有沒有麼錯誤

另外fadeout完馬上show你是如何判斷沒有fadeout的?
這肉眼觀察不出來吧O.O

ccutmis iT邦研究生 5 級 ‧ 2018-03-29 17:16:54 檢舉

補充一下
$(document).ready(function () {
$(".pageloading").fadeOut();
});
$(window).on('load', function(){
$(".pageloading").show();
});

這樣改試試看...按照暐翰大說的,樓主把show跟fadeout的順序顛倒了 事件先發生的on('load')作 pageloading .show() 然後等$(document).ready觸發作 pageloading .fadeout() 收工~ :D

asys0512 iT邦新手 1 級 ‧ 2018-03-29 17:26:22 檢舉

看過了,沒有顯示錯誤

我要發表回答

立即登入回答