在IE8和黑莓手册中,javascript setInterval函数无法正常工作

时间:2012-02-21 12:57:21

标签: javascript jquery setinterval blackberry-playbook iscroll4

我有一个定义的点击,除了两个之外,所有点都可以。我按如下方式绑定click事件:

$('#next_item').bind(myDown,function (e) {
    config.scrolling = true;
    config.scrollTimer = setInterval(function (e) {
        if(!config.scrolling) return false;
        if(myScroll.x >= myScroll.maxScrollX){              
            myScroll.scrollTo((config.itemWidth+config.itemBoxSpacing), 0, 400, true);
        }else{
            config.scrolling=false;
            clearInterval(config.scrollTimer);
        }
    }, 100);
    return false;
});

我正在使用iScroll 4#next_item用于滚动动态添加的div onclick。 setInterval function()被使用,因为在单击时我想一次滚动一个div而在mousedown我希望div滚动直到我做mouseup。现在问题是在黑莓手册中一次点击多次一个div滚动但在ipad,Android平板电脑和桌面浏览器(包括IE8)中工作正常。此外,当我在blacberry playbook中进行mousedown时,div继续滚动直到结束并且不会立即停止鼠标,而对于IE8,div停止并且滚动似乎setInterval无法正常工作。需要做些哪些改变才能在IE8和黑莓手册中使用

更新:

var isIOS = config.isIpad || config.isIphone || config.isAndroid;
var myDown = isIOS ? "touchstart" : "mousedown";
var myUp = isIOS ? "touchend" : "mouseup";

$('#next_item').bind(myUp,function (e) {
    config.scrolling = false;
    clearInterval(config.scrollTimer);
    return false;
});

1 个答案:

答案 0 :(得分:0)

我解决了黑莓问题。我不得不改变我的一行代码。

var isIOS = 'ontouchstart' in document.documentElement; /*This detects all touch devices*/

在我之前的代码中,我没有检测到黑莓手册,因此它收到了mousedown事件,导致触摸设备的默认touchstart事件与mousedown事件一起触发,从而导致意外结果。

我仍然无法解决IE8问题。请有人建议为IE8做些什么。