2012-01-27 89 views
9

在Chrome和Safari中,$("body").scrollTop(1000)會在預期的位置出現。jQuery scrollTop在瀏覽器中不一致

在IE和FF中,沒有任何反應。

在IE和FF中,$(window).scrollTop(1000)工作,但他們去了不同的地方。它也可以在Chrome和Safari中使用,但它們都會到不同的地方。他們似乎高達300-500像素。

是否有任何一致的方式來設置跨瀏覽器的scrollTop屬性,如果沒有,爲什麼不jQuery抽象呢?

我想將它設置爲動畫,在Chrome和Safari中運行良好,但在其他瀏覽器中運行良好。

是我唯一的選擇做瀏覽器檢測? (不好的做法)還是有更好的方法?

+0

您試過使用$(document).scrollTop(「...」)嗎? – epignosisx 2012-01-27 23:30:47

+0

這實際上工作。我曾嘗試$('文檔'),但沒有。如果你回答的問題,我會給你信用。 – 2012-01-27 23:53:50

回答

11

$(jQuery.browser.webkit ? "body": "html").animate({ scrollTop: myTop }, myDur);

Webkit的瀏覽器(Chrome瀏覽器/ Safari瀏覽器,同時支持Mac和Win)用 「身體」,其他(FF /歌劇/ IE 7-9)使用 「HTML」

愛上瀏覽器檢測。

+5

從1.3版開始,jQuery.browser已被棄用,並從1.9版中刪除 – 2013-06-26 07:56:20

0

根據瀏覽器的不同,您需要將scrollTop應用於bodyhtml,但不會將其應用於兩者。由於.scrollTop()適用於集中的第一元素,但.animate()適用於所有的元素,你可以這樣做:

$('body, html').animate({ 
    scrollTop: 1000 
}, 'fast'); 

如果你想更改立即應用,改變速度('fast')到0。或者,您可以使用以下內容,但我更喜歡上述語法:

$('body, html').each(function() { $(this).scrollTop(1000); }); 
相關問題