Javascript 无法阻止用户返回上一个登录页

Javascript 无法阻止用户返回上一个登录页,javascript,jquery,html,jquery-mobile,Javascript,Jquery,Html,Jquery Mobile,当前,用户在打开应用程序时会看到登录页面。登录后,他们进入主页。我想防止用户登录后返回登录页面,用户只需单击手机或web浏览器上的“后退”按钮即可轻松完成此操作 下面的方法通过阻止我返回到我想要的页面来实现这一点。例如,如果我将id标识为home,它将阻止我返回主页。问题是,这适用于我的应用程序中的所有页面,而不是我实际想要强制执行的一个页面,即我的登录页面。当我使用登录页面的id时,不会发生任何事情,我可以通过单击“上一步”按钮返回登录页面。请告知我做错了什么 JS 用于登录页面的HTML &

当前,用户在打开应用程序时会看到登录页面。登录后,他们进入主页。我想防止用户登录后返回登录页面,用户只需单击手机或web浏览器上的“后退”按钮即可轻松完成此操作

下面的方法通过阻止我返回到我想要的页面来实现这一点。例如,如果我将id标识为home,它将阻止我返回主页。问题是,这适用于我的应用程序中的所有页面,而不是我实际想要强制执行的一个页面,即我的登录页面。当我使用登录页面的id时,不会发生任何事情,我可以通过单击“上一步”按钮返回登录页面。请告知我做错了什么

JS

用于登录页面的HTML

<div data-role="page" id="loginForm" data-theme="e" data-add-back-btn="false">
            <header data-role="header">
                 <h1>Log In</h1> 
            </header>

            <form id="form1" name="form1" method="GET" action="http://example.com">
                <label for="id">Username   </label>
                <input type="text" name="id" id="id" />

                <label for="password">Password   </label>
                <input type="password" name="password" id="password" />

                <input type="hidden" name="rank" id="rank" value="123">

                <input type="submit" name="submit" value="Login"/>    
            </form>
        </div>

上面的代码在除加载的第一页之外的所有页面上工作的问题是,默认情况下,jQM不会更改第一页URL中的哈希值。上面的代码检查是否有从URL检索的哈希值,因为第一个页面没有哈希值,所以返回false,因此不会阻止用户返回登录页面

下面的代码检查URL并将其与加载的第一个页面的.URL进行比较。.url存储在$.mobile.navigate.history.stack中,它的索引为0,因为它是第一页

jquerymobile1.4
jQuery Mobile可以使用会话吗?通过检查用户是否通过会话登录,您可以将他们重定向到主页,如果他们试图转到登录页面,请使用任何方法,只要我可以阻止“返回”。你能给我举个例子吗。谢谢。你使用什么服务器端语言?我使用PHP作为服务器端。在线搜索登录示例。你会找到很多资源来帮助你的问题。这段代码有效-阻止我返回登录页面,但最终也阻止我从其他页面返回。例如,从“福利”页面返回到“主页”。首先,我登录并转到主页。我从主页中选择“福利”页面。在登陆“福利”页面后,如果我按“后退”,一切正常并返回“主页”。如果我在主页上按“后退”,则会显示警告消息。发出此警报后,当我进入“福利”页面并试图返回主页时,警报也会出现,不允许我进入主页。@keshk true,我刚刚注意到了它。这是因为URL已更改。如果返回false,则可以使用以下代码。当前变量=$.mobile.pageContainer.pagecontainergetActivePage;$。mobile.pageContainer.pagecontainerchange,当前;。同时,我会想出更好的解决办法。嗨,我修改了你提到的代码,但仍然有同样的问题。添加了上面编辑的代码,以便您查看,以防我理解错误。@keshk您的编辑是正确的。我的代码需要修改。我正在测试其他解决方案。
<div data-role="page" id="loginForm" data-theme="e" data-add-back-btn="false">
            <header data-role="header">
                 <h1>Log In</h1> 
            </header>

            <form id="form1" name="form1" method="GET" action="http://example.com">
                <label for="id">Username   </label>
                <input type="text" name="id" id="id" />

                <label for="password">Password   </label>
                <input type="password" name="password" id="password" />

                <input type="hidden" name="rank" id="rank" value="123">

                <input type="submit" name="submit" value="Login"/>    
            </form>
        </div>
<div data-role="page" id="benefits" data-theme="e">
            <header data-role="header">
            <h1>Benefits</h1>   
        </header>
        <article data-role="content" >
            <div data-role="collapsible-set" id="benefitsList">
                <!--will fill up with info from database-->
            </div>
        </article>
        </div>
$(document).on('pagebeforechange', function (e, data) {
    var to = $.mobile.path.parseUrl(data.toPage);
    if (typeof to === 'object') {
        var u = to.href;
        if (u === $.mobile.navigate.history.stack[0].url) {
            alert('You are logged in!');
            var current = $.mobile.pageContainer.pagecontainer("getActivePage");
            $.mobile.pageContainer.pagecontainer("change", current); 
        }
    }
});
$(document).on('pagebeforechange', function (e, data) {
    var to = $.mobile.path.parseUrl(data.toPage);
    if (typeof to === 'object') {
        var u = to.href;
        if (u === $.mobile.navigate.history.stack[0].url) {
            alert('You are logged in!');
            var current = "#" + $.mobile.pageContainer.pagecontainer("getActivePage")[0].id;
            window.location.hash += current;
            return false; /* this will stop page change process */
        }
    }
});
$.mobile.navigate.history.stack[0].url
$.mobile.urlHistory.stack[0].url
$.mobile.pageContainer.pagecontainer("getActivePage")[0].id
$.mobile.activePage[0].id