1

我正在开发一个 jQuery 移动项目,需要防止用户返回某些页面,UI 显然没有提供用户不应该返回的后退按钮,但是当用户单击浏览器上的后退按钮。

我试图通过将 pagebeforechange 事件绑定到一个函数来阻止用户返回,该函数通过查看目标页面的 URL 可以知道用户是否返回。这在我的项目中有点简单,因为只有 2 个 URL 可通过 UI 访问,因此任何其他 URL 都意味着用户点击了后退按钮。由于 URL 的性质,我正在使用正则表达式来验证这一点:

$( document ).bind('pagebeforechange', function(event, data) {  

  if(typeof data.toPage === "string") {
    var url = data.toPage;
    var regex = /.../
    var paramsIndex = url.indexOf('?'); // Get rid of possible params

    if(paramsIndex > 0) {
      url = url.substr(0, paramsIndex);
    }

    if(regex.test(url)) {   
       event.preventDefault(); // Prevent the user from going back..
    }       
  }

});

不幸的是,这不起作用,即使正则表达式工作正常并且每次用户点击后退按钮时都匹配(并且只有在那时)。我想知道您是否有任何想法,我更愿意继续使用 jquery mobile 的 ajax 导航。

干杯

4

2 回答 2

0

return false;正如塞缪尔所说或添加event.stopImmediatePropagation();

于 2012-11-11T05:20:53.387 回答
0

我不是移动开发专家,但看到这个问题,也许你应该试试这个:在你的事件处理程序中,替换event.preventDefault();return false;. 这只会给你更多的机会来实现你的目标。

于 2012-06-14T07:27:36.300 回答