jQuery移动呼叫页面

时间:2013-04-23 08:48:51

标签: jquery html5 jquery-mobile

如何通过重新加载/刷新页面来执行调用页面?

逻辑:如果用户成功登录,则页面将使用HTML5存储作为数据移动到管理员页面。

例如:sessionStorage.setItem('MyID','12345');

如果成功登录,则字符串12345将被带到管理员页面。但是制作12345的过程来自登录表单。

要在管理员页面上阅读我使用的数据:sessionStorage.getItem('MyID')

我遇到的问题是当jQuery mobile制作翻页时,管理员页面无法读取数据,虽然我必须输入数据读出功能块:$(document).ready(function())

但是,如果我执行刷新/重新加载管理员页面,则手动数据然后正确读取

我用过:

function callAdmin(){
   $.mobile.changePage("admin.html");
}

如何使用刷新页面或重新加载页面进行调用页面?或者是否有另一种方法可以将数据结果发送到管理员页面?

1 个答案:

答案 0 :(得分:2)

这里的主要问题是文档就绪。这是一个常见的jQuery Mobile问题,您无需刷新页面即可阅读sessionStorage。

您需要做的是使用正确的jQuery Mobile页面事件。文档就绪应该只用于基本的jQuery。在jQuery Mobile的情况下,它通常会在页面成功加载到DOM之前触发。

如果您想了解更多相关信息,请阅读我的其他答案: jQuery Mobile: document ready vs page events

你在 jQuery 中学到的第一件事就是在 $(document).ready()函数中调用代码,这样一旦DOM被加载就会执行所有内容。但是,在 jQuery Mobile 中,Ajax用于在导航时将每个页面的内容加载到DOM中。因为这个 $(document).ready()将在加载第一个页面之前触发,并且每个用于页面操作的代码将在页面刷新后执行。这可能是一个非常微妙的错误。在某些系统上,它似乎可以正常工作,但在其他系统上可能会导致不稳定,难以重复的怪异。

经典jQuery语法:

$(document).ready() { 

});

要解决这个问题(相信我这是一个问题) jQuery Mobile 开发人员创建了页面事件。简而言之,事件是在特定页面执行中触发的事件。其中一个页面事件是 pageinit 事件,我们可以像这样使用它:

$(document).on('pageinit', function(){

});

我们可以更进一步,使用页面ID而不是文档选择器。假设我们有jQuery Mobile页面,其id为 index

<div data-role="page" id="index">
    <div data-theme="a" data-role="header">
        <h3>
            First Page
        </h3>
        <a href="#second" class="ui-btn-right">Next</a>
    </div>

    <div data-role="content">
        <a href="#" data-role="button" id="test-button">Test button</a>
    </div>

    <div data-theme="a" data-role="footer" data-position="fixed">

    </div>
</div>

要执行只能用于索引页面的代码,我们可以使用以下语法:

$('#index').on('pageinit') {

});