【问题标题】:jQuery mobile: URL query string does not changejQuery mobile:URL 查询字符串不会改变
【发布时间】:2011-11-14 23:25:40
【问题描述】:

我在玩 jQuery Mobile,遇到了一些(对我来说)奇怪的行为。

我有一堆链接,每个链接都指向同一个 jQM 页面 #otherpage,但 URL 查询字符串的值不同,例如 #otherpage?q=foo、#otherpage?q=bar 等等。对其他页面的更改工作正常,但查询字符串在单击之间保持不变,因此如果我首先单击指向#otherpage?q=foo 的链接,然后返回第一页,则所有后续页面更改为#otherpage 将具有q=foo ,无论当前单击的链接的 href 表示什么。

jsFiddle 似乎不支持 jQM,所以我在这里举个例子:http://cpak.se/dump/location-search-test.html

我已经在 Mac 上的 Chrome 和 Safari 中尝试过。

我使用查询字符串在页面之间传递简单数据,因为我有其他代码挂钩到 pagechange 事件,这或多或少不知道早期代码可能做了什么。如果我不能让这个工作,我将不得不找到另一种方法来传递数据......:P

干杯!

/克里斯托弗

【问题讨论】:

  • 我知道这是一个老问题,但如果您仍有问题,我最近创建了一个 plug-in,这可能会对您有所帮助。

标签: url mobile jquery-mobile


【解决方案1】:

禁用 jQm 似乎是在浏览器中正确更新 url 参数的最简单的解决方案。例如。在链接锚中添加data-ajax="false",而不是使用$.mobile.changePage。

<a href="#page?id=1" data-ajax="false">

在动态应用中预先修改 href 的值。

【讨论】:

    【解决方案2】:

    我已经查找了这个问题,因为它确实看起来有点奇怪。有一个未解决的问题:https://github.com/jquery/jquery-mobile/issues/2859

    Atm jQuery Mobile 不推荐使用查询参数:

    我们目前不支持将查询参数作为哈希的一部分 片段,尽管这是经常讨论的内容 内部并在功能请求列表中。

    他们建议使用如下插件:

    但是,由于 DOM 中活动页面的数据 URL 确实发生了变化,因此有一种解决方法,您可以使用 $(".ui-page-active").attr("data-url"); 检索它我已经在您的网站上测试过它,它给了我所有 3 个唯一 URL p>

    【讨论】:

    • 感谢您抽出宝贵的时间为我挖掘!我会试试“data-url”。
    【解决方案3】:

    默认情况下,jQuery Mobile 不允许将查询字符串参数传递给内部链接的页面。查看此文档页面的最底部(页面底部的第二个项目符号):http://jquerymobile.com/demos/1.0rc3/docs/pages/page-navmodel.html

    jQuery Mobile 不支持将查询参数传递给 内部/嵌入式页面,但您可以添加两个插件 您的项目以支持此功能。有一个轻量级的page params plugin 和一个功能更齐全的jQuery Mobile router plugin 用于backbone.js 或spine.js。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-04
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      • 1970-01-01
      • 2017-07-11
      • 1970-01-01
      相关资源
      最近更新 更多