【问题标题】:what happens when i refresh a jquery mobile page当我刷新 jquery 移动页面时会发生什么
【发布时间】:2013-07-23 07:13:00
【问题描述】:

刷新 JQUERY MOBILE 页面时会发生什么?
我使用 ajax 在 page1 上名为“json”的变量中获取数据,当用户单击特定动态生成的元素时,我将单击元素的 id 存储在会话变量中,并将 changePage() 存储到新的JQM page2 我使用json.thepropertyiwant 生成列表,一切正常,即使后退和前进按钮也能正常工作,但是如果我刷新 page2 然后json.thepropertyiwant 变为未定义这是我得到的错误:

Uncaught TypeError: Cannot read property 'responseData' of undefined

我在单个 html5 页面模型中使用多页

编辑:

  • 我使用了变量名json 而不是JSON 我只是输入它喜欢 强调这一点,但现在我认为这是愚蠢的!
  • 我也发现了我的问题。我的错误是我假设 页面刷新会为我所在的页面调用pageinit,但它可以工作 与普通的 html 页面刷新和触发器没有什么不同 document.ready 每次,然后 pageinit 用于我所在的页面。
    有没有办法听 pagerefresh 事件并覆盖其正常功能?

【问题讨论】:

  • 给出一些你用过的代码

标签: javascript jquery html jquery-mobile dom


【解决方案1】:

我相信您在某些情况下会生成 page2 的动态内容。 我相信事件是pageinit或pagecreate。这些事件只触发一次(如果您将 ajax 页面加载设置为 true)。 当您加载 page1 时会发生什么请求数据(类似于 pageinit?) 当您刷新page2时,数据不存在,因为您请求数据的事件没有触发,这是完全正常的,因为当您刷新page2时,page1与它无关。发布您请求数据的代码部分,以及为 page2 生成动态内容的部分以获取更多信息。

【讨论】:

  • 是的,我发现我在编辑中意识到了这一点,谢谢!
  • 我很好奇,有没有办法覆盖页面刷新事件功能?
  • 我想你想阻止刷新?
  • 不,只是想听“刷新”,然后绑定一个自定义函数来决定现在发生的事情,但我想浏览器不会让我这样做!我可以绑定 F5 按键,但不能绑定我想的浏览器刷新按钮...
【解决方案2】:

嗯...这里发生了一些问题。

  • 对于初学者,不要使用名为“JSON”的变量。这不好 - 已经有一个名为 JSON 的全局对象用于解析和编码 JSON!你可能会不小心覆盖它。

  • 正如您所发现的,如果您将数据存储在 javascript 中的变量中 - 该变量仅在当前页面的内存中。如果刷新页面,则该变量将不再在内存中。

    但这与 jQuery Mobile 没有任何关系。这就是 Web 浏览器的工作方式 - 在内存中创建的 javascript 结构不会在页面刷新之间持久化。

    通常您需要使用 localStorage 或 cookie 自己保存数据,以便在页面刷新之间保持不变。

  • 通常您不会刷新 jQuery Mobile 应用程序。所以前一点通常不是太大的问题。用户刷新页面就像重启应用一样。

    应用程序应该在开始时重新加载它需要的任何数据,即 从 localStorage、cookie 或进行一些新的 ajax 调用 重新加载。您必须编写该逻辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多