为什么当我访问我的jQuery移动页面时,让我们说page.php它显示得很好,但是当我访问同一页面时页面.php#someDetailsHere它只显示一个白页? 我该如何解决这个问题?
我使用第三方应用重定向到我的网页,并将#
添加到网址中。
答案 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历史填充功能的依赖。