簡體   English   中英

為什么我的Javascript / jQuery可以在Chrome和Safari中運行,但不能在Firefox,IE9或Opera中運行?

[英]Why does my Javascript/jQuery work in Chrome and Safari but not firefox, IE9, or Opera?

http://jsfiddle.net/nicktheandroid/tfZns/4/

你抓住頁面並向上或向下扔它,有點像android或iphone。 它適用於Chrome和Safari(webkit),但它在firefox,ie9或Opera中不起作用。

我得到了一些這個腳本的幫助,我真的不確定它不適合在那些瀏覽器中工作。 我認為Javascript / Jquery中的某些東西在幾乎每個瀏覽器中都會起作用,我猜我錯了。

在Webkit瀏覽器中,您可以在頁面上進行瀏覽,然后向上或向下輕拂並釋放鼠標按鈕,頁面將滾動/滑動,就像您在觸摸屏手機上輕彈或拖動手指一樣,它會向上或向下滾動瀏覽器頁面。 在Firefox,IE9和Opera中,嘗試mousedown,然后輕彈/拖動只會導致頁面上的數字突出顯示,頁面不會像應該的那樣滾動。

使用Javascript:

var gesturesX = 0;
var gesturesY = 0;

var startPosition = 0;
var velocity = 0;
var isMouseDown = false;
var startScrollTop = 0;

var timer;

function GetVelocity() {
    velocity = startPosition - gesturesY;
}

$(document).mousemove(function(e) {
    gesturesX = parseInt(e.pageX, 10);
    gesturesY = parseInt(e.pageY, 10);
    $("#mouse").html(gesturesY);
    if (isMouseDown) {
        var scrollToPosition = startScrollTop + (startPosition - gesturesY);
        $("body").scrollTop(scrollToPosition);
        return false;
    }
});

$(document).mousedown(function() {
    if ($("body").is(':animated')) {
        $("body").stop(true, false).trigger('mouseup');
    }
    startPosition = gesturesY;
    startScrollTop = $("body").scrollTop();
    isMouseDown = true;
    timer = window.setTimeout(GetVelocity, 50);
    $(document).everyTime(50, function(i) {
        velocity = startPosition - gesturesY;
    });
});

$(document).mouseup(function() {
    isMouseDown = false;
    if (velocity !== 0) {
        $Body = $("body");
        var distance = velocity * 10;
        var scrollToPosition = $Body.scrollTop() + distance;
        $Body.eq(0).stop().animate({
            scrollTop: scrollToPosition
        }, 1000);
        velocity = 0;
    }
    return false;
});

// create a ton of numbers to make the page long - below
$("#test p").each(function(index) {
    $(this).prepend('<span class="commentnumber">' + index + 1 + '</span>');
});

將“body”更改為“html”並且它將起作用。 在最新的Firefox和Opera上測試,你必須檢查它是否適用於舊版本。

$("html").scrollTop(scrollToPosition);

您還可以考慮禁用文本選擇,因為滾動頁面時看起來有點滑稽。

我認為你應該使用selector $('html, body')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM