您的主要问题是准备好文件。这是一个常见的 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 代替文档选择器。假设我们有一个带有 id index的 jQuery Mobile 页面:
<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') {
});