我怀疑这与您正在使用的网址有关,而 JQM 不明白如何制作这样的链接:
/Client/Events/StubCheckIn/innasf?stubID=c807321b-5381-4338-adef-9e676374d85d
没有文件结尾,没有标签,我一直在用一个简单的 [?para=meter] (https://github.com/jquery/jquery-mobile/issues/4253) 链接和 JQM 处理它几个天。
我解决“ipad 上什么都没有发生”的最简单方法是通过相应的 JQM 小部件启用 iPad 调试器和 console.log-ging。在您的情况下从这里开始(大约第 3582 行):
// click routing - direct to HTTP or Ajax, accordingly
$( document ).bind( "click", function( event ) {
// your first flag
console.log("flag 1 - click detected")
if( !$.mobile.linkBindingEnabled ){
return;
}
var link = findClosestLink( event.target ), $link = $( link ), httpCleanup;
if ( !link || event.which > 1 || !$link.jqmHijackable().length ) {
// your second flag
console.log("flag 2 - not a link?!?)
return;
}
...
通过点击处理程序一直执行此操作,并确保标记所有返回,这会因各种原因结束函数。
当您完成点击处理程序(不是那么长)时,您会看到它触发了一个 changePage,因此请跟随它到 changePage 处理程序并继续标记。这应该从这里的 (#3232) 行开始:
// Show a specific page in the page container.
$.mobile.changePage = function( toPage, options ) {
console.log("flag x - made it to changepage");
...
一直通过changepage,然后跟随transitionpages(我认为不会是这样)和$.mobile.loadPage(大约#2931,更有可能)。
标记完所有内容后(在加载页面后停止!:-),在浏览器和 ipad 上重新加载页面,并查看 ipad 与浏览器的故障位置。可能需要一个小时,但之后您将对 JQM 的工作方式有一个很好的了解 :-)
另一个原因可能是 pushstate 处理程序(大约 #3781)。如果浏览器支持 pushstate(桌面是,iOS ......不确定,iOS3 否)你可以制作漂亮的 URL,所以如果你从你的页面开始:
root.com/client/events/checkin/innasf
到一个对话框
http://root.com/Client/Events/StubCheckIn/innasf?stubID=96e63aee-1465-4ecd-ad35-123f240d09ff
您的浏览器仍然显示页面 url - 可能是因为您将changehash设置为 false (保留 url)。这(我相信)是由 pushstate 处理程序完成的,因为您的 URL 应该是:
root.com/client/events/checkin/innasf#http://root.com/Client/Events/StubCheckIn/innasf?stubID=96e63aee-1465-4ecd-ad35-123f240d09ff&some-dialog-ending
这将是非推送状态设备将尝试解析的 url(例如,我的 iPad ios3.3),它也不起作用。
然而,我的猜测是,当 JQM 解析 URL 时,您的链接在 click 或 changepage 处理程序中的某处失败。
如果您标记自己,请告诉我浏览器和 iOS 之间的差异在哪里出现。然后我们可以看看这是否可以修复。