4

我在 jQuery Mobile 中发现了一些奇怪的行为,我什至可以在演示网站上重现这些行为:

  1. 直接http://jquerymobile.com/test/docs/forms/textinputs/ _
  2. 在文本输入中输入内容
  3. 单击页面上的任何链接并享受 ajax-y 动画
  4. 使用浏览器的后退按钮返回

结果:在文本输入中输入的文本仍然存在。这就是我要的。

但是,如果您来自网站上的某个地方,这会中断:

  1. 转到http://jquerymobile.com/test/docs/forms/
  2. 点击“文本输入”
  3. 从上面执行步骤 2 到 4

结果:在文本输入中输入的文本已经消失。这不是我想要的。

我在 Chrome for Desktop 和 Windows Phone 模拟器上对此进行了测试,两者都表现出相同的行为。我该怎么做才能始终保留在文本输入中输入的文本?就我而言,这是一个搜索框。我希望用户能够在从搜索结果导航回来后细化搜索词,而无需再次输入所有内容。

4

3 回答 3

4

这是因为,当您来自 docs/forms 时,ajax 在开始时被禁用。那么,jQueryMobile 禁用 dom-cache。您可以通过在加载 jquerymobile.js 之前添加它来强制 dom 缓存:

$(document).bind("mobileinit", function() {
    $.mobile.page.prototype.options.domCache = true;
});

编辑

我的解决方案有效,我刚刚尝试过:

  • 转到我的演示页面

  • 点击“文本输入”

  • 在“文本输入:”中输入内容

  • 单击左侧的“搜索输入”(我的演示中只有一些链接有效)

  • 使用浏览器的后退按钮返回

你的文字还在!

(注意:此页面显示原始版本,有问题,因此没有 domCache,以证明当我复制 jQueryMobile-Docs 页面进行演示时我没有更改任何其他内容)。

于 2012-04-30T10:43:53.067 回答
0

我发现最可靠的方法是使用 pagebeforehide 将数据存储在本地存储中,并在需要时使用 pagebeforeshow 将其放回

于 2012-05-02T18:08:23.673 回答
0

请尝试一下,它挽救了许多人的生命。

 $.extend(  $.mobile , {
        ajaxEnabled      : false,
        hashListeningEnabled: false
    });

可以在以下链接上阅读很多内容。

http://forum.jquery.com/topic/jquery-mobile-true-browser-back-button-issue

于 2012-04-30T09:29:24.057 回答