Javascript 调用两次JQM pagebeforeshow事件
举一个很小的例子来说明我对jquerymobile的问题: 正如您在控制台日志中看到的:Javascript 调用两次JQM pagebeforeshow事件,javascript,jquery,jquery-mobile,Javascript,Jquery,Jquery Mobile,举一个很小的例子来说明我对jquerymobile的问题: 正如您在控制台日志中看到的: pagebeforeshow-页面索引(索引):45 onDeviceReady:function()(索引):39 pagebeforeshow-页面索引(索引):45 ondevicerady:function() pagebeforeshow发生了两次,我花了很多时间试图找出原因!?!我是傻瓜还是jqm bug?Firefox对我来说很好。在webkit浏览器上,尝试删除changeHash选项。
pagebeforeshow-页面索引(索引):45
onDeviceReady:function()(索引):39
pagebeforeshow-页面索引(索引):45
ondevicerady:function()
pagebeforeshow发生了两次,我花了很多时间试图找出原因!?!我是傻瓜还是jqm bug?Firefox对我来说很好。在webkit浏览器上,尝试删除
changeHash
选项。当启动并显示第一页时,数据url
保存在$.mobile.UrlHistory
中,作为基本url,不带哈希标记。例如,第一个页面的URL是www.stackoverflow.com/index.html
,其他页面的ID标签是www.stackoverflow.com/index.html#pageLogin
,依此类推
当您在禁用了changeHash
的情况下从主页移动到另一个页面时,jQuery移动导航会使用www.stackoverflow.com/index.html
而不是www.stackoverflow.com/index.html#pageLogin
更新URL栏,因此,它会再次触发页面事件
如果您仍然希望禁用changeHash
并避免多个evnet触发,则需要在jQuery Mobile初始化后禁用(mobileinit
事件)
$(文档).on(“mobileinit”,函数(){
$.mobile.hashListengEnabled=false;
});
您使用的是
changePage()
,事件被调用两次,第一页调用一次,然后当您更改该页时,是的,我使用changePage(),如果我理解正确,则应该在显示之前为每个页调用一次。在我的例子中,我只为第一页设置了pagebeforeshow事件。为什么会发生第二次?我的坏消息,你是对的,应该只被解雇一次,因为我读到它可能是一个修复,使用导航()而不是不推荐的方法changePage():很抱歉,我不知道jquery mobileall@A.Wolff如果他使用的是jQM 1.3,他可以使用jQM 1.4中不推荐的changePage
,您能详细说明您的答案吗?为什么changeHash
会“修复”这个问题?酷!拯救了我的一天,伙计们!
<head>
<link rel="stylesheet" href="jquery.mobile-1.3.2.min.css" />
<script src="jquery-1.9.1.min.js"></script>
<script>
$(document).on("mobileinit", function() {
$.mobile.hashListeningEnabled = false;
});
</script>
<script src="jquery.mobile-1.3.2.min.js"></script>
</head>