jQuery在浏览器刷新时丢失XML数据

jQuery lose XML data on browser refresh

本文关键字:XML 数据 浏览器 刷新 jQuery      更新时间:2023-09-26

我已经构建了一个具有多个内部页面的应用程序,例如:

<div id="states" data-role="page">
  <div data-role="header"> <a href="#" onClick="parent.history.back()" data-icon="back">Back</a>
    <h1>My List</h1>
  </div>
  <!-- /header -->
  <div data-role="content"></div>
  <!-- /content -->
  <div data-role="footer" data-position="fixed" data-id="myfooter">
    <div data-role="navbar">
      <ul>
        <li><a href="#" data-icon="gear">Option</a></li>
        <li><a href="#" data-icon="home">Home</a></li>
        <li><a href="#" data-icon="search">Search</a></li>
      </ul>
    </div>
    <!-- /navbar --> 
  </div>
  <!-- /footer --> 
</div>
<!-- /page -->

当页面初始化时,我加载一个XML文件并动态填充页面。这很好用。如果我在默认的内部页面上刷新屏幕,它会重新加载而不会出现问题。我可以深入一两页,点击后退按钮。。。这同样有效。我正在使用此代码来维护我的哈希历史记录(我是一个noob)。

$(document).bind( "pagebeforechange", function( e, info ) {
    if ( typeof info.toPage === "string" ) {
        var u = $.mobile.path.parseUrl( info.toPage ),
            re = /^#.../;
        if ( u.hash.search(re) !== -1 ) {
            buildLists( u, info.options );
            e.preventDefault();
        }
    }
});

当我转到另一个页面并点击刷新时,问题出现了,我的数据返回为未定义的,并且我的所有数据。find(…)调用都是无效的,从而引发错误。

有人有这个问题吗?如何确保我的数据a)被保留或b)被重新加载。我有什么东西不见了吗?

我已经研究过这段代码,但它并不像我需要的那样动态。我的所有列表视图都是通过XML填充的。

您正在收听错误的事件。更改哈希时会触发pagebeforechange。你想在哈希更改时更改它,就像在中一样,当浏览器设置它时。听"hashchange"我建议在没有jQuery的情况下学习如何做这些事情,因为库只是隐藏了实际的技术。

如果这不起作用,就放弃jQuery(我讨厌它,从不使用它,我的所有网站都可以在所有设备上工作)。还有很多其他方法可以做到这一点。这里有一个:http://www.davidpirek.com/blog/on-hash-change-javascript-listener