我猜测这可能与您使用的URL有关,而JQM不理解这样的链接应该如何处理:
/Client/Events/StubCheckIn/innasf?stubID=c807321b-5381-4338-adef-9e676374d85d
没有文件结尾,没有井号,我一直在为一个简单的[?para=meter](https://github.com/jquery/jquery-mobile/issues/4253)链接和JQM处理它而奋斗了几天。
我解决“iPad上什么都没发生”的最简单方法是启用iPad调试器并通过相应的JQM小部件进行console.log。在您的情况下,请从这里开始(大约在第3582行):
$( document ).bind( "click", function( event ) {
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 ) {
console.log("flag 2 - not a link?!?)
return;
}
...
从头到尾执行 click-handler,确保标记所有 返回值,以各种原因结束函数。
完成 click-handler(不长),你会看到它触发了一个 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号,更有可能)。完成所有标记后(在loadpage后停止!:-),在浏览器和iPad上重新加载页面,看看iPad与浏览器相比失败的地方。可能需要一个小时,但之后您将对JQM的工作原理有很好的理解 :-)。
另一个原因可能是推送状态处理程序(大约3781号)。如果浏览器支持推送状态(桌面是,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
这将是非pushstate设备(例如我的iPad ios3.3)尝试解析的url,但也无法工作。然而,我猜测您的链接在点击或changepage处理程序中失败,当JQM解析URL时。如果您自己发现了问题,请告诉我浏览器和iOS之间的区别在哪里。然后我们可以看看是否可修复。
/Client/Events?ID=...
页面返回的HTML没有错误吗? - shanabus