#jquery移动页面的url中的字符

时间:2012-01-11 00:13:57

标签: javascript jquery mobile

为什么当我访问我的jQuery移动页面时,让我们说page.php它显示得很好,但是当我访问同一页面时页面.php#someDetailsHere它只显示一个白页? 我该如何解决这个问题?

我使用第三方应用重定向到我的网页,并将#添加到网址中。

2 个答案:

答案 0 :(得分:2)

修改:我浏览了您的页面,看看发生了什么。

你的悲痛是由jQuery Mobile引起的。当页面加载时,它会将其检测为“页面更改”,并且由于jQuery Mobile使用哈希(#)来模拟AJAX请求的后退按钮,因此它还对它看到的页面进行了一些特殊处理加载了哈希。

底线是它看到页面加载,决定它应该“拒绝”它,并防止任何进一步发生。

我的猜测是jQuery Mobile团队并没有指望任何人在init上加载带有哈希的移动页面,因为代码似乎假设页面的第一个加载没有。

要自己动手,请在isEmbeddedPage中的jquery.mobile-1.0.min.css函数中设置断点。

一种可能的解决方案是以某种方式阻止jQuery Mobile代码在页面最初加载时运行。但这可能会打破jQuery Mobile提供的其他东西。

答案 1 :(得分:1)

正如所说的,事实证明jQM为了自己的目的解析哈希,如果它无法在负载上理解它们就会冻结(如果你问我不必要的攻击性行为,它们至少应该触发一个自定义事件 - 尽管有在GitHub上报告了high priority issue

一种解决方案是禁用jQM的哈希处理:在DOM准备好之前,执行以下命令:

$.mobile.hashListeningEnabled = false;

请注意,这必然会破坏对不支持历史记录pushState(IE等)的浏览器的jQM历史填充功能的依赖。