windows-phone-7 - 鼠标事件问题 WP7 JQuery Mobile

标签 windows-phone-7 jquery-mobile

我正在尝试使用 JQueryMobile 组合一个水平内容 slider 。

以下代码在 Android、IOS、Chrome 和 IE9 上运行良好,用户可以触摸(或鼠标按下)并向左或向右拖动内容。

在 WP7 (Mango) 上发生的所有事情都是最初的触摸似乎突出显示了包含 DIV 的项目,但任何移动都被忽略了。

Content Slider Sample

<!DOCTYPE html>
<html class="ui-mobile">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>Scroll View Test</title>
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.css" />
    <script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.js"></script>
</head>
<body class="ui-mobile-viewport">
    <div data-role="page">
        <div data-role="header">
            <h1>Content Slider</h1>
        </div>
            <div data-role="content">
            <div style="height:50px;width: 110px; overflow: hidden">
                <div id="divScroll" style="width: 500px; margin-left:0px;left: 0px; top: 0px;">
                    <div class="sliderItem" style="background-color:#A03030;float: left; width: 50px;height:50px;">Item 1</div>
                    <div class="sliderItem" style="background-color:#B03030;float: left; width: 50px;height:50px;">Item 2</div>
                    <div class="sliderItem" style="background-color:#D03030;float: left; width: 50px;height:50px;">Item 3</div>
                    <div class="sliderItem" style="background-color:#E03030;float: left; width: 50px;height:50px;">Item 4</div>
                    <div class="sliderItem" style="background-color:#F03030;float: left; width: 50px;height:50px;">Item 5</div>
                </div>
            </div>

            <div id="dbg"></div>
            <div id="dbg2"></div>

            <script type="text/javascript" language="javascript">
                var mouseIsDown = false;
                var mouseDownX = 0;
                var mouseDownMargin = 0;

                $(document).bind('vmouseup', function (event) {
                if (mouseIsDown) {
                    event.preventDefault();
                    $('#dbg').html(event.type);
                    mouseIsDown = false;
                }});

                $('.sliderItem').bind('vmousedown', function (event) {
                    event.preventDefault();
                });

                $('#divScroll').bind('vmousedown vmousemove', function (event) {
                    event.preventDefault();
                    $('#dbg').html(event.type);
                    if (event.type == 'vmousedown') {

                        mouseIsDown = true;


                        var ml = $('#divScroll').css('margin-left').replace('px', '');
                        $('#dbg2').html(ml);
                        mouseDownMargin = parseInt(ml);
                        mouseDownX = event.pageX;

                    }

                    if (event.type == 'vmousemove' && mouseIsDown) {
                        var delta = mouseDownX - event.pageX;
                        $('#dbg2').html(mouseDownMargin - delta);


                        $('#divScroll').css({ marginLeft: mouseDownMargin - delta });

                    }
                });
            </script>
        </div>
    </div>
</body>
</html>

我该怎么做才能让它在 WP7 上运行?

提前感谢您的建议。

最佳答案

这在 WP7 上不起作用,因为 WP7 使用的 IE9 版本不以非常好的方式支持鼠标向下/移动/向上事件。发生的情况是,当您第一次将手指放在屏幕上时,不会触发任何事件。当您抬起手指时,mousedown/click/mouseup 事件会立即按该顺序触发。这使得不可能实现任何允许用户操作/拖动 DOM 元素的功能。

解决此问题的唯一方法是编写一些模拟鼠标或触摸事件的 native 代码。我在这方面取得了一些成功……请参阅以下博客文章:

http://www.scottlogic.co.uk/blog/colin/2012/01/fastclick-for-wp7-improving-browser-responsiveness-for-phonegap-apps/

但是,这不会给您 mousemove 事件。我知道 Nitobi (PhoneGap) 开发人员正在寻求使用这种技术来模拟触摸事件:

https://issues.apache.org/jira/browse/CB-112

但是,我不确定这是否真的可行。

关于windows-phone-7 - 鼠标事件问题 WP7 JQuery Mobile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8919477/

相关文章:

jquery - jQueryMobile 拆分 ListView 中的图标在 Firefox 中没有响应,而包含拆分项目则没有

jquery-mobile - 为什么单击后退按钮时动态页面会重新加载?

javascript - JQuery/Jquery Mobile - 通过切换从 div 中删除类实例的最佳方法

windows-phone-7 - 除了 SLART 和 GART 之外,有人可以建议用于 Windows Phone 应用程序开发的 AR SDK 吗?

windows-phone-7 - Windows Phone 7 : post some values, 检索响应

c# - 在 Windows Phone 7 中创建一个简单的测验应用程序

android - Phonegap Android(不在安卓高清手机上显示谷歌广告)

jquery-mobile - jQuery Mobile 和 PhoneGap 性能问题

c# - 在 WP7 中调用 POST 方法

windows-phone-7 - 如何知道 Windows Phone 7 当前是否正在播放音乐?