2012-02-21 10 views
0

私は、2つを除いてすべてで動作するように定義されたクリックを持っています。私はiScroll 4を使用していますIE8とブラックベリーのプレイブックでjavascript setInterval関数が正しく動作しない

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

次のように私は、クリックイベントをバインドしています。 #next_itemは、動的に追加されたdiv onclickをスクロールするために使用されます。 setInterval function()が使用されています。シングルクリックでは、一度に1つのdivをスクロールしたいのですが、mousedownではmouseupを行うまでdivをスクロールしたいからです。今問題は、ブラックベリーのプレイブックでは一度に1つのdivをスクロールして1回クリックするだけですが、ipad、Androidのタブレット、IE8などのデスクトップブラウザでうまくいきます。また、blacberryのプレイブックでmousedownを実行すると、divは最後までスクロールし続け、mouseupで直ちに停止せず、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; 
}); 
+0

$( '#next_item')。bind(myDown、myDownはどこから来たのですか?) –

+0

@AndréAlçadaPadezコードを更新しました。 – user850234

答えて

0

。私は自分のコードを1行だけ変更しなければならなかった。私の以前のコードでは

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

私はブラックベリーの脚本を検出していなかったので、それはタッチデバイスがmousedownイベントとなり、予期しない結果と一緒にトリガするために、デフォルトtouchstartイベントを発生させたマウスダウンイベントを受け取りました。

私はまだIE8の問題を解決できませんでした。誰でもIE8のために何をすべきかを提案してください。

関連する問題