JQM pagebeforeshow事件被调用了两次

时间:2014-02-26 11:25:30

标签: javascript jquery jquery-mobile

有一个非常小的例子用jquerymobile来证明我的问题:http://jsfiddle.net/forrest_gump/uuWLP/

正如您在控制台日志中看到的那样: pagebeforeshow - pageIndex (index):45 onDeviceReady: function() (index):39 pagebeforeshow - pageIndex (index):45 onDeviceReady: function()

pagebeforeshow发生了两次,我花了很多时间试图找出原因!?!我是傻瓜还是jqm bug?

2 个答案:

答案 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选项。