1

我想动态更改我的 jQM 页面的 URL(当用户执行某些操作时)以修改查询字符串。使用history.pushState工作正常,但是当 jQM 尝试向 URL 添加哈希时,例如导航到对话框时,事情不会按预期工作:URL 恢复到其原始值,并且 jQM 将哈希附加到那个(不是提到当我尝试关闭对话框时发生错误)。

我查看了 jQuery Mobile 文档,据我了解,页面的原始 URL 存储在元素的data-url属性中。data-role="page"因此,每当我需要更改 URL 时,我也尝试对其进行修改,但是当打开对话框时,它仍会恢复为原始 URL。

检查此 JS Bin 以获取示例:http: //jsbin.com/egunif/5/edit

单击“对话框”按钮时,URL 会更改(连同 data-url 属性),然后打开对话框。您可以看到 urlegunif/hashtest在 jQM 将其更改为 之前短暂更改为egunif/5#&ui-state=dialog.

所以似乎原始 URL 存储在其他地方,问题是在哪里?是否可以更改此 URL,以便在 jQM 对其进行哈希更改时不会发生冲突?

谢谢!

4

1 回答 1

1

我最终所做的只是在我将页面更改为对话框(在pagebeforechange处理程序中)时将 url 设置回其原始值,然后在返回页面(在处理程序中)时将其重新替换为新值pagechange

由于空的哈希值(可能与此问题有关),我仍然在浏览器的调试控制台中收到错误,但它不会影响网站的功能,所以我现在将其保留。不过,我仍然愿意接受更好的建议!

更新:

在 jQM 的 1.2.0 最终版本中,引入了弹出窗口,以及通过设置data-history="false"弹出窗口来禁用哈希更改的选项。通过用弹出窗口替换我的所有对话框,我可以操纵 url 而不必担心与 jQM 冲突。

于 2012-08-23T19:02:58.520 回答