gpt4 book ai didi

ios - 文档 pageinit 在 iOS (jQueryMobile) 上触发不止一次

转载 作者:可可西里 更新时间:2023-11-01 03:36:48 27 4
gpt4 key购买 nike

我有一个 Phonegap & jQuery Mobile 应用程序,它在 Android 和网络上运行良好。在 iOS 上,我得到了意想不到的结果,这似乎是由于我为大多数应用程序进程绑定(bind)处理程序的 document.pageinit 事件被触发了两次。

不,我没有绑定(bind)它两次。不,我没有使用 document.ready。是的,我确实将它绑定(bind)到文档,在脚本的早期而不是在任何其他函数中。

$(document).on('pageinit',function(event){
alert(' Pageinit on document');
//Some more code
})

第一次触发时,启动画面仍在显示。此时,在使用 XCode 的 MacBook Pro 上进行测试时,控制台甚至不可用:当我使用 console.log 时,上述消息没有出现在控制台中。

第二次,在 jQueryMobile 创建第一个页面后不久触发。

是什么导致了这种双重触发,我该怎么办?

编辑:后来我注意到 pageinit 不仅会触发第二次,而且每次我打开一个新的 data-role='page' div 时都会触发。请参阅下面我的回答。

最佳答案

我很欣赏 Zoltan 的回答,它在某些情况下可能是相关的,但这不是原因。

$(document).on('pageinit') 将为您的 jQuery Mobile 应用程序中使用的每个页面转换触发。使用 HTML 链接和使用 $.mobile.changePage(); 时都会发生这种情况。

令人震惊的是,docs不要在任何地方提及它:他们建议您使用它而不提及它会在每个后续页面触发。

我无法相信他们将这个有问题的示例作为 $(document).ready() 的有效等价物。

他们应该建议您使用 .one() 而不是 .bind() 或 on() 进行绑定(bind),以避免多次执行代码。

关于ios - 文档 pageinit 在 iOS (jQueryMobile) 上触发不止一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12436315/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com