【问题标题】:Swipe not working in Cordova/Phonegap browser滑动在 Cordova/Phonegap 浏览器中不起作用
【发布时间】:2014-07-28 14:04:57
【问题描述】:

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

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 等)。除了应用内,它们都可以在任何地方工作。

有人知道可能出了什么问题吗?

【问题讨论】:

  • 此链接可能会有所帮助。 swipe link
  • 奇怪.. 似乎是其他一些脚本造成了滑动错误。现在已经修好了。仍然想知道为什么它只发生在应用程序内。
  • 您可以在“答案”部分发布您的修复以及您是如何获得修复的。它可能会对遇到类似问题的人有所帮助。
  • 贴出来了,不知道能不能算是修复。。。

标签: jquery cordova mobile touch swipe


【解决方案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,但我一开始就使用它(也尝试了其他一些库)。所以我认为这是另一个脚本标签的错。

【讨论】:

    猜你喜欢
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    相关资源
    最近更新 更多