Pagebeforehide事件仅为inner"触发;页面转换

pagebeforehide event fired just for "inner" page transitions

本文关键字:触发 转换 quot 事件 inner Pagebeforehide      更新时间:2023-09-26

我需要在离开页面(页面'#first')时做一些事情。很简单:

$(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>

事件未触发,处理程序未执行。

页面内容简单或复杂并不重要——我发现这只取决于链接是内部的还是外部的。

怎么了?

rel="external"意味着页面将作为外部页面打开,所有以前的页面内容(包括其脚本)将丢失,这也将触发整个页面刷新,因此您的pagebeforehide事件不会触发,因为它将不再存在。

Mobile页面事件只能在正常页面更改时发生。基本上我想说的是,你需要去另一个jQuery Mobile页面来触发这个事件。在你的情况下,你是强制应用程序做一个完整的页面刷新,在这一点上,页面刷新将发生在pagebeforehide事件。

EDIT:

虽然没有任何跨浏览器的解决方案,但你总是可以作弊。

  1. 而不是有href链接在你的按钮,用#代替你的链接http://www.google.com并添加一个id,这样我们就可以识别它,像这样:

    开放一些

现在为这个按钮添加一个点击事件,并在将页面更改为www.google.com:

之前做任何需要做的事情
    $(document).on('click', '#change-page', function(){       
        // Do something here then change page
    });
  1. 或者将您的按钮链接到另一个虚拟的内页(仅用于此目的),在它上捕获pagebeforehide:

    $(document).on('pagebeforehide ', function(){       
        // Again do something here and manualy change the page
    });