2015-06-07 90 views
0

我有一個「一」的標籤標有「shoe_tag」鏈接到一個URL,下面的下面的JS代碼:Modal出現在Chrome/Firefox上,但不是Safari瀏覽器?

$(".shoe_tag").on('click', function() { 

    tpos = $(window).scrollTop() + 300; 
    myModal.open(); 
    $(".scotch-modal").css({top:tpos, position:'absolute'}); 


}); 

此代碼可以讓我在服務器響應,這一般需要打開一個模式4秒。在Chrome和Firefox上,模式將在瀏覽器等待服務器響應時打開,但在Safari上未打開任何模式。但是,如果我在最後放置一個調試器語句,然後在Web控制檯中調用「myModal.open()」,那麼將出現模式。它幾乎像Safari一樣跳過這段代碼,除非我在控制檯中調用它。我一直在研究基於Safari的東西一個多星期,並且難住,有什麼想法?

+0

它應該有一直是var tpos而不是tpos – nikhil

回答

1

我認爲這是與瀏覽器的渲染管線有問題,儘量呈現出短的時間內模態:

$(".shoe_tag").on('click', function() { 

    var tpos = $(window).scrollTop() + 300; 
    $(".scotch-modal").css({top:tpos, position:'absolute'}); 
    setTimeout(function(){myModal.open();}, 100); 

}); 

定時器救了我的命很多很多次;-)

0

嘗試

var tpos = $("body").scrollTop() + 300; 

WebKit瀏覽器總是渲染窗口/ HTML scrollTop的爲零。

+0

它不是一個位置問題,當我在瀏覽器中按「返回」時,該模式出於某種原因出現在正確的位置。它就像一旦Safari發出請求,它不會在頁面上呈現任何其他內容? – user1835351

+0

你可以創建一個plunker和分享。由此,我將更容易進行調試。 – nikhil

相關問題