Search code examples
javascriptjquerysetintervalblackberry-playbookiscroll4

In IE8 and blackberry playbook javascript setInterval function not working properly


I have a defined a click which works as desired in all except two. I am binding the click event as follows :

$('#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;
});

I am using iScroll 4. The #next_item is used to scroll the dynamically added div onclick. setInterval function() is used because on single click i want to scroll one div at a time and on mousedown i want the div to scroll till i do mouseup. Now the problem is on single click more then one div scroll at a time in blackberry playbook but works fine in ipad, android tablet and desktop browser including IE8. Also when i do mousedown in blacberry playbook the div keeps on scrolling till end and does not stop immediately on mouseup and for IE8 the div stops and scroll seems like setInterval is not working properly. What changes needs to be done to make this work in both IE8 and blackberry playbook

Update :

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;
});

Solution

  • I have solved the blackberry problem. I had to just change one line of my code.

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

    In my earlier code i was not detecting blackberry playbook and so it was receiving the mousedown event which caused the default touchstart event for touch devices to trigger along with the mousedown event and hence unexpected result.

    I still could not solve the IE8 issue. Please anyone suggest what to do for IE8.