Javascript pagebeforehide事件仅为“启动”;“内部”;页面转换
当我离开页面(页面“#第一”)时,我需要做一些事情。 其实很简单:Javascript pagebeforehide事件仅为“启动”;“内部”;页面转换,javascript,jquery,jquery-mobile,Javascript,Jquery,Jquery Mobile,当我离开页面(页面“#第一”)时,我需要做一些事情。 其实很简单: $(document).on('pagebeforehide', '#first', function(event, ui) {alert('leaving page');}); 当我通过“内部”链接离开页面时没有问题,比如: <a href="#second" data-role="button">Open something</a> <a href="http://www.google.co
$(document).on('pagebeforehide', '#first', function(event, ui) {alert('leaving page');});
当我通过“内部”链接离开页面时没有问题,比如:
<a href="#second" data-role="button">Open something</a>
<a href="http://www.google.com" rel="external" data-role="button">Open something</a>
这里触发事件并执行处理程序
但当我想打开像这样的外部链接时:
<a href="#second" data-role="button">Open something</a>
<a href="http://www.google.com" rel="external" data-role="button">Open something</a>
此处未激发事件且未执行处理程序
页面内容是简单还是复杂并不重要——我发现这只取决于链接是内部链接还是外部链接
怎么了?rel=“external”意味着页面将作为外部页面打开,并且所有以前的页面内容(包括其脚本)都将丢失,这也将触发整个页面刷新,因此您的pagebeforehide事件不会触发,因为它将不再存在
jQuery移动页面事件只能在正常页面更改期间发生。基本上,我想说的是,您需要转到另一个jQuery移动页面以触发此事件。在您的情况下,您正在强制应用程序执行完整页面刷新,此时,页面刷新将发生在pagebeforehide事件之前
编辑:
虽然没有任何交叉浏览器解决方案,但您总是可以作弊
$(document).on('click', '#change-page', function(){
// Do something here then change page
});
$(document).on('pagebeforehide ', function(){
// Again do something here and manualy change the page
});
你能建议一些安全的(意思是:独立于浏览器的)方法来捕获页面之间的转换吗?这一点非常重要,因为Google Chrome不支持DOM
onunload
event,mobile Safari(iOS设备)不支持onbeforeunloadevent等。你运气不好,因为没有任何类似的交叉浏览器实现。但这不应该阻止你作弊。我会在我的答案中写下可能的解决方案。点击处理是处理页面转换的明显案例。明显但不包括所有可能的方式-使用浏览器后退/前进按钮和关闭页面进行转换。它是最终版本吗?常识上的陷阱页面转换(!)的跨浏览器实现不存在?让我们从另一个角度来看这一点。如果浏览器开发人员不能接受css3/html5实现,为什么他们会在java脚本问题上达成一致?不要依赖3岁以下的任何技术。