鼠标事件仍在开火触摸事件,即使设置了preventDefault(mouse event still

2019-10-20 10:22发布

是有什么误会我在这里? 我经常使用这样的代码,我想工作,要么用于台式机和iPad设备在我的网站如下:

$("#someElement")
    .on( "mousemove", function(e) {         
        alert ( "I am still here" );
        // undesired code for ipad here
    } )
    .on( "touchmove", function(e) {
        e.preventDefault();
        // only desired code for ipad use here
    } );

我读了很多地方的e.preventDefault应杀灭附着在鼠标事件。 而且,触摸事件阐述摆在首位。 然而,我现在认识到,警报仍是触发我的iPad。 为什么? 对任何提示? 提前致谢!

编辑:我意识到,当我把“touchstart”而不是“touchmove”的e.preventDefault()在预测方式工作。 来吧,伙计们,一些想法!

Answer 1:

请与用户代理ipad.simply使用特雷纳里运营商更简单的代码

var isIPad = navigator.userAgent.match(/iPad/i) != null;

$("#someElement").on(((isIPad)? "touchmove" : "mousemove" ), 
                         ((isIPad)? gotoIpad : gotoOthers ));

function gotoIpad() {

      alert("I am ipad");
}

function gotoOthers() {

      alert("I am not ipad");
}


Answer 2:

试试这个用户代理

    var isTouch = /iPad/i.test(navigator.userAgent);

            if(isTouch ){
            $("#someElement").on( "touchmove", function(e) {
                       // only desired code for ipad use here
                } );
            }
     else{
            $("#someElement")
                .on( "mousemove", function(e) {         
                    alert ( "I am still here" );
                    // undesired code for ipad
                });
            }


文章来源: mouse event still fired on touch event even with preventDefault set