2013-02-12 10 views
6

誰かがtouchenterイベントがこのコードで動作しない理由を教えてください。マウスセンターは、デスクトップ上で正常に動作します。とてもシンプルなはずですが、何かが欠けています。touchenterイベントが呼び出されていない

ここで例 - 以下http://jsfiddle.net/gCEqH/6/

全コード:

<!DOCTYPE html> 
<html> 
    <head> 
     <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
    </head> 

    <body> 
     <img id="myImg" src="http://jackiehutchings.com/wp-content/uploads/2011/09/g-plus-icon-96x96.png" />   

     <script> 
      $(window).load(function() { 
      $('#myImg').on("touchenter mouseenter", function(event){ 
       alert('entered!'); 
      }); 
     }); 
     </script> 
    </body> 
</html> 
+0

本当に、それは私のWindows Phoneで動作しますか?どのブラウザですか? – enginefree

+0

Android携帯電話やiPadでは動作しません。電話で私は標準のブラウザとOperaの両方を試しました。 – Justin

+0

ipadの私のための働く罰金。あなたがその上で働いているときにうまく動作します。あなたは接触してホバーを探していますか? – karthik

答えて

0

たぶん、このような何かが働くだろうか?

var elementIdTouching = ""; 
$('body').on("touchmove", function(e){ 
    var tList = e.touches; // get list of all touches 
    for (var i = 0; i < tList.length; i++) { 
     var thisTouch = tList[i]; // not 100% sure about this 
     var elementTouching = document.elementFromPoint( 
      thisTouch.screenX, 
      thisTouch.screenY 
     ); 
     if (elementTouching.id != elementIdTouching) { 
      elementIdTouching = elementTouching.id; 
      if (elementTouching.id == "myImg") { 
       alert("entered!"); 
      } 
     } 
    } 
}).on("touchend", function(e){ 
    elementIdTouching = ""; 
}); 
$('#myImg').on("mouseenter", function(e){ 
    alert('entered!'); 
}); 

TLIST〜https://developer.mozilla.org/en-US/docs/Web/API/TouchList

免責事項:私はこれをテストしていません。

+0

そのアプローチはうまくいくが、非常に遅い。私は回避策を考え出した。 (上記の私のコメントを参照してください)。 – Justin

+0

quirksmodeによると、 'clientX'と' clientY'は 'screenX'と' screenY'よりも良い選択です:http://www.quirksmode.org/dom/w3c_cssom.html#t20 – Webthusiast

関連する問題