我们可以避免在jquery mobile中直接访问页面吗?

时间:2012-01-10 04:01:36

标签: jquery-mobile

我的Jquery移动应用程序有一个简单的登录页面,用户将通过该页面登录并能够访问其余页面。但问题是我仍然可以在不登录的情况下访问其余页面。使用cookie在客户端维护登录会话,因为在服务器端没有维护会话。我有一个HTML文件,其中我有所有必需的jquery移动页面。有什么办法可以限制直接访问我的申请的内部页面。

<body onload="init()">
  <div>
    <!--  login page -->

    <div data-role="page" id="home" data-theme="wl" style="top: 1px;">
      ..............
    </div><!-- End of login page  -->
    <!--  forgot page -->

    <div data-role="page" id="forgot" data-theme="wl">
      .................
    </div><!--  End of forgot password page -->
    <!-- Search page  -->

    <div data-role="page" id="search" data-theme="wl">
      ................
    </div><!-- End of search result page  -->
    <!--  Sendmail page -->

    <div data-role="page" id="sendmail" data-theme="wl"></div>
    <!-- End of Sendmail page  -->
    <!--- View Profile Page =-->

    <div data-role="page" id="viewProfile" data-theme="wl">
      ........................
    </div><!-- End of View Profile Page  -->
  </div>
</body>

2 个答案:

答案 0 :(得分:1)

我找到了另一个简单的解决方案。早些时候,当我遇到这个问题时,我常常在按钮点击的onClick事件期间检查cookie会话。但是现在我通过在下面描述的pageshow事件期间检查cookie会话来更改它。

$('mypage').live('pageshow', function (event, ui) {
    if(checkCookie()){
        //do some task    
    } else {
       alert('Your Session has Expired or User not Logged In');
       $.mobile.changePage("#login", "slide", true, true);
    }
});

答案 1 :(得分:0)

您可以原型化(覆盖)页面显示事件方法。

此处的代码是您处理该事件的方式:

<script type="text/javascript" language="javascript">
    $('mypage').live('pageshow', function (event, ui) {
        alert('This page was just hidden: ' + ui.prevPage);
    });
</script>

可在此处找到更多活动:http://jquerymobile.com/test/docs/api/events.html

这是关于javascript原型设计的教程:

http://www.javascriptkit.com/javatutors/oopjs2.shtml

寻找覆盖的起点可以在

区域附近
  

$。事件

可能你甚至不需要覆盖一个事件,也许现有的一个会做你想做的事情。您可以使用firebug检查事件处理程序变量,以查看是否存在参数选项以阻止导航到下一页。