jquery мобильные события на Android против Iphone - PullRequest
4 голосов
/ 15 марта 2012

Я новичок в jquery mobile. Моя проблема в том, что мне нужно перехватывать события vmousemove в div, потому что мне нужно перетаскивать изображения внутри этого div, как изображения svg на картах Google.

Я получил демо на http://demo.baral.de/test/

У меня есть 3 устройства: iphone iOS5 , Android 3.2 на вкладке Samsung и Android 2.2.2 на HTC desire . Когда я "завис" над зеленым div, я подумал, что будет много "vmousemove", пока мой палец касается движений на дисплее.

iphone срабатывает:

  • vmouseover
  • vmousedown
  • vmousecancel
  • много vmousemove
  • vmouseup

Мне кажется это идеальным

Android 3.2 срабатывает:

  • vmouseover
  • vmousedown
  • vmousecancel
  • vmousemove

Android 2.2.2 срабатывает:

  • vmouseover
  • vmousedown
  • vmousecancel
  • vmousemove (1 раз)

и после того, как я закончил движение и мой палец покидает дисплей, он срабатывает

  • много vmousemove
  • vmouseup

Это "нормально" для jquery mobile? Ошибка или просто неправильный код?

Спасибо!

код:

<!DOCTYPE html> 
<html> 
<head> 
    <title>My Page</title> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.css" />
    <script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.js"></script>
</head> 
<body> 
    <div data-role="page" data-position="fixed" id="wrapper">
        <div id="test" style="width: 200px; height: 200px; background-color: green"></div>
        <div id="footer" style="border: 1px solid black; width: 200px;">    
            <ul></ul>
        </div>
    </div>
    <script type="text/javascript">
        $("#wrapper").live('pageinit', function() {
            $("#test").bind('vmouseover vmousedown vmousemove vmouseup vclick vmousecancel', function (event) {
                $('#footer ul').append("<li>"+event.type+"</li>");
            });
        });
    </script>
</body>

Ответы [ 2 ]

0 голосов
/ 10 июля 2014

У меня была похожая проблема, и добавление «event.preventDefault ()» в начале функции обратного вызова решило ее.Подробности описаны здесь .

Пример:

$("#test").bind('vmouseover vmousedown vmousemove vmouseup vclick vmousecancel', function (event) {
     event.preventDefault();
     $('#footer ul').append("<li>"+event.type+"</li>");
});
0 голосов
/ 15 марта 2012

Это не ошибка в jquery-mobile, когда вы хотите чего-то добиться, когда мышь двигается, вы можете сделать это в любом случае, так как она срабатывает один раз.Это может быть дизайн.

...