滑动无法在Cordova / Phonegap浏览器中使用

时间:2014-07-28 14:04:58

标签: jquery cordova mobile touch swipe

我正在尝试实现一种功能,允许用户通过滑动来删除邮件。带有消息的页面是一个外部页面,这意味着它在浏览器中打开:

window.open(url, '_blank', 'location=no');

滑动功能不起作用。它可以在桌面浏览器中,在移动浏览器中工作,但不能在我从应用程序中打开浏览器时使用。

这是我的功能。我按班级将它们分配给多个div:

$('.message').bind('swipeleft',function(event){
     swipeleftHandler(this);
});
$('.message').bind('swiperight',function(event){
     swiperightHandler(this);
});

这是我的观点:

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

我不知道现在做了什么。我尝试了多个插件(Hammer.js,touchSwipe.js等)。他们都在除应用程序之外的任何地方工作。

任何人都知道可能出现什么问题?

1 个答案:

答案 0 :(得分:1)

我不确定我是否可以将其称为修复,但在此处:

我的HTML中有两个脚本标记。 ({{}}代码属于web2py)

<script type="text/javascript">
    var userinfo = 1;
    function mailThisToMe(message_id){
        alert('uuid = ' + '{{=request.args(0)}}');
        $.post("{{=URL('page','mail_message_to_me')}}", { uuid: '{{=request.args(0)}}', message_id: message_id });
        console.log('mail this message id: ' + message_id + ' to me');
    }
</script>

<script>
    $(document).on('pageinit', "#messages_new", function () {
        function swipeleftHandler(message){
           $.ajax({
               type: "POST",
               url: "{{=URL('page','message_swipe')}}",
               data: { type: 'like', user_id: '{{=request.args(0)}}', category_id: $(this).attr('rel'), message_id: $(this).attr('id') },
               success: function () {
                   $(message).hide();
               },
               error: function () {
                   alert("could not reach server");
               }
           })

        }
        function swiperightHandler(message){
           $.ajax({
               type: "POST",
               url: "{{=URL('page','message_swipe')}}",
               data: { type: 'not_like', user_id: '{{=request.args(0)}}', category_id: $(this).attr('rel'), message_id: $(this).attr('id') },
               success: function () {
                   $(message).hide();
               },
               error: function () {
                   alert("could not reach server");
               }
           })

        }
        $(".message").swipe( {
           swipe:function(event, direction) {
               if (direction == 'left'){
                   swipeleftHandler(this);
               }
               else if (direction == 'right'){
                   swiperightHandler(this);
               }
           },
           threshold:50
        });
    });
</script>

我注意到当我注释掉第一个脚本标签时,滑动工作了。然后我把两个脚本标签放在一起瞧!所以我不确定问题是什么,据我所知,第一个脚本标签没有任何错误。

我也回到了TouchSwipe.js,但我在一开始就使用它(也尝试过其他一些库)。所以我认为这是另一个脚本标签的错误。