Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未调用touchenter事件_Javascript_Jquery_Touch_Touch Event - Fatal编程技术网

Javascript 未调用touchenter事件

Javascript 未调用touchenter事件,javascript,jquery,touch,touch-event,Javascript,Jquery,Touch,Touch Event,有人能告诉我为什么TouchCenter事件在此代码中不起作用吗。鼠标器在桌面上运行良好。应该很简单,但我遗漏了一些东西 例如: 完整代码如下: <!DOCTYPE html> <html> <head> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> </head>

有人能告诉我为什么TouchCenter事件在此代码中不起作用吗。鼠标器在桌面上运行良好。应该很简单,但我遗漏了一些东西

例如:

完整代码如下:

<!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>

$(窗口).load(函数(){
$('#myImg')。打开(“触摸输入鼠标”,函数(事件){
警报('entered!');
});
});

也许这样的方法行得通

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!');
});
var elementIdTouching=“”;
$('body')。打开(“触摸移动”,函数(e){
var tList=e.touchs;//获取所有触摸的列表
对于(变量i=0;i
t列表~


免责声明:我还没有测试过它。

你确定它在Windows Phone上对我有效吗?什么浏览器?在Android手机或iPad上不工作。在手机上,我尝试了标准浏览器和Opera。在ipad上,它对我来说很好用。当你使用它时,它工作得很好。你在找hover in touch吗?我做了一些额外的测试。据我所知,“触摸输入”似乎只有在我触摸并释放元素时才会触发。就像一个简单的水龙头。“touchmove”可以正常工作,但它是从触摸开始的元素调用的,而不是从触摸当前结束的元素调用的。每次调用“touchmove”来确定当前结束的元素时,进行XY计算似乎是不合理的。它可以每秒调用几百次。如果“TouchCenter”按我理解的方式工作(如桌面上的mousemove),它会更高效。我从来没有让TouchCenter正常工作过。也没有在网上找到太多有用的信息。使用getElementFromPoint触摸移动速度非常慢,我尝试了。不过,我是在与数百种元素进行比较。只要几个就行了。如果要比较的元素没有移动,请尝试以下操作:当页面加载时,将每个元素的开始和结束XY值放入数组中。调用touchmove时,通过与事件的XY值进行比较来遍历数组。我用这种方法几乎没有减速。它远比getElementFromPoint高效。祝你好运。这种方法确实有效,但速度很慢。不过我想出了一个解决办法。(见我上面的评论)。根据quirksmode,
clientX
clientY
将是比
screenX
screenY
更好的选择: