2014-10-05 50 views
2

我正在尝试构建一个jquery移动应用程序,其中有几个页面使用密码保护进行了轻微的保护。我假设我可以把一些页面事件中的东西重定向,但我似乎无法让它干净地工作。我可以重定向发生,但它首先闪烁我试图保护的页面。在jquery mobile中保护页面

这里是我试过的最有前途的事情:

$(document).on("pagebeforeshow", "#ProtectedPage", function (event) { 

     if (!hasUserLoggedIn()) { 
       alert("You must be logged in to visit this page"); 
       event.preventDefault()  

       $("body").pagecontainer("change", "#loginpage"); 
     } 

}); 

感谢您的帮助,您可以提供

回答

0

的窍门是做一个真正的重定向到登录页面上pagebeforechange代替:

$(document).on("pagebeforechange", function (event, data) { 

     if (!hasUserLoggedIn()) { 
       alert("You must be logged in to visit this page"); 
       data.toPage = "#loginpage"; 
       $.extend(data.options, {changeHash: false}); 
     } 

}); 

注:jQuery的移动> = 1.4.3已经通过一个类似

弃用事件
$(document).on("pagecontainerbeforechange", function (event, data) { 

    if (!hasUserLoggedIn()) { 
      alert("You must be logged in to visit this page"); 
      data.toPage = "#loginpage"; 
      $.extend(data.options, {changeHash: false}); 
    } 

}) 

;

http://jqmtricks.wordpress.com/2014/07/13/pagecontainerbeforechange/

+0

这是一个很好的开端,但它从我的角度来看这两个问题。首先,它使用我想避免的已弃用的方法。我可以处理,但它也保护每一页,而我只想保护他们几个。有没有保护页面子集的方法?我阅读了关于这个事件的文档,并且没有看到data.fromPage – user3706813 2014-10-14 14:46:40

+0

为jQuery 1.4.3 + ....添加了替换事件(事实上,这个新事件是来自这个新事件的)。此事件在导航到可能不安全的页面之前启动,因此将此事件置于文档级别的方法是正确的。保护应用程序内的所有非法导航。 – 2014-10-14 20:42:33

+1

是的,这工作。为了满足我的需要(只保护一部分页面),我必须像参考文章中那样检查和分解data.absUrl。非常感谢你的回答。 – user3706813 2014-10-15 03:03:56