有一个非常小的例子用jquerymobile来证明我的问题:http://jsfiddle.net/forrest_gump/uuWLP/
正如您在控制台日志中看到的那样:
pagebeforeshow - pageIndex (index):45
onDeviceReady: function() (index):39
pagebeforeshow - pageIndex (index):45
onDeviceReady: function()
pagebeforeshow发生了两次,我花了很多时间试图找出原因!?!我是傻瓜还是jqm bug?
答案 0 :(得分:2)
启动并显示第一页时,data-url
将$.mobile.UrlHistory
保存在www.stackoverflow.com/index.html
中作为 base 网址,不包含主题标签。例如,第一页的网址为www.stackoverflow.com/index.html#pageLogin
,其他网页的网址为主题标签 changeHash
,其中一个。
当您从主页移至另一个页面且www.stackoverflow.com/index.html
被禁用时,jQuery Mobile Navigation会更新网址栏www.stackoverflow.com/index.html#pageLogin
而非changeHash
,因此会触发< em> page 再次举办活动。
如果您仍想禁用mobileinit
并避免多个evnet触发,则需要在jQuery Mobile初始化(<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>
事件)后禁用hashListeningEnabled
。
{{1}}
<强> Demo 强>
答案 1 :(得分:0)
Firefox对我来说很好。在webkit浏览器上尝试删除changeHash
选项。