我正在尝试实现一个功能,允许用户通过滑动来删除消息。带有消息的页面是外部页面,这意味着它是在浏览器中打开的:
window.open(url, '_blank', 'location=no');
滑动功能不工作。它的工作在桌面浏览器,在移动浏览器,但不是当我打开一个浏览器从应用程序。
以下是我的函数。我将它们按类分配给多个div:$('.message').bind('swipeleft',function(event){
swipeleftHandler(this);
});
$('.message').bind('swiperight',function(event){
swiperightHandler(this);
});
这是我的viewport
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
我不知道现在该怎么办。我尝试过多个插件(Hammer.js, touchSwipe.js等)。它们在任何地方都可以工作,除了应用内。
有谁知道是怎么回事吗?
我不确定我是否可以称之为修复,但它是这样的:
我的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,但我在一开始就使用它(也尝试了一些其他库)。所以我认为这是另一个脚本标签的错误。