2014-10-05 45 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