jquery-mobile之jQuery Mobile 在来回浏览时何时重新加载页面

EasonJim 阅读:19 2024-11-24 20:56:43 评论:0

我尽量避免在我的移动网络应用程序中来回浏览时重新加载。 JQuery Mobile 似乎是为此而设计的,但我在驯服这种行为时遇到了麻烦。

基本上,我有两个页面( page1page2 )。 page1有一个链接到 page2反之亦然。第一次加载时,两个页面 (i) 在 ajax 中加载数据和 (ii) 相应地更改 DOM 结构。我使用全局 var以避免重新加载数据,效果很好。

假设page1 (resp page2) 有一个名为 dom10 的 DOM 结构(resp dom20)在 html 和 dom11 (resp dom21) 加载所有内容后。

这是我的问题:

  • 我加载 page1 ,数据已加载,DOM 已从 dom10 更改为至 dom11

  • 然后我点击 <a href="page2">click</a> , page2加载后,检索数据并将 DOM 从 dom20 更改为至 dom21 .到目前为止一切顺利。

  • 然后我点击 <a href="page1">click</a>回去。该页面与我离开时一样 dom11 .太好了,没有GET完全调用。

  • 我终于点击了<a href="page2">click</a>又一次,这就是它的痛处。页面再次加载(调用 GET),未检索数据但 dom 设置回 dom20

我可以继续点击来回,我总是得到相同的行为。每当我点击 page1每当我点击 page2 时,我都会得到我离开时的 DOM。有一个GET调用并重新加载 DOM。

所以这是我的问题,有没有办法防止重新加载已在 jQuery Mobile 中加载的页面?

我可以想出一些变通方法来让我的 DOM 随心所欲,但我希望避免不必要的调用减慢我的应用程序。

想玩的可以试试there .

非常感谢您的帮助!

PS:令人惊讶的是,我在 Firefox 和 Chrome 上没有得到相同的行为......恐怕事情并不那么简单。

请您参考如下方法:

默认情况下,jQM 总是对页面发出 AJAX 请求,即使您之前已经访问过它。如果您设置 $.mobile.page.prototype.options.domCache = true; 那么 jQM 不会重新加载页面。

如果是这样,如果您需要刷新页面,则需要在调用 $.mobile.changePage 时将 reloadPage 设置为 true - 否则页面将过时。

但请注意,如果您这样做,您的所有页面都将附加到 DOM,从而导致影响性能的庞大 DOM - 您需要在 JS 中正确管理它,这是一个不同的主题。但是想象一下,当您的 DOM 中有 20 个页面时,执行一个开放式的 $('.myClass') 搜索。我在我写的旧答案中有更多详细信息:Jquerymobile - $.mobile.changepage


标签:jquery
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号