Jquery mobile data-rel=“dialog” 在 iPhone 或 iPad 上不起作用

Jquery mobile data-rel="dialog" doesnot work on iphone or ipad

本文关键字:iPhone iPad 不起作用 data-rel mobile dialog Jquery      更新时间:2023-09-26

以下代码

<a data-rel="dialog" href="/Client/Events?ID=c2a7a58e-bef1-4574-987f-4adfc2c3ecc1">
    <div class="ui-li-aside"> 1 </div>
       <div>
          Alejandra Garcia
       </div>
   </a>

这适用于我的电脑浏览器,也适用于 Windows Phone 浏览器。但不适用于iPhone或iPad浏览器。看起来链接被点击了,但我没有看到任何对话框。要么超级延迟,要么就是不工作。

页面的响应和加载时间非常快,并且在常规桌面浏览器上无缝运行。这是一个加载的非常小的页面。

我应该尝试让它工作的任何提示?

我怀疑这与你正在使用的网址有关,JQM不明白如何处理这样的链接:

/Client/Events/StubCheckIn/innasf?stubID=c807321b-5381-4338-adef-9e676374d85d

没有文件结尾,没有主题标签,我一直在与一个简单的 [?para=meter] (https://github.com/jquery/jquery-mobile/issues/4253( 链接作斗争,JQM 处理了几天。

我解决"ipad上什么都没有发生"的最简单方法是启用iPad调试器和控制台.log通过相应的JQM小部件。在您的情况下,从这里开始(大约第 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");
     ...

一直通过更改页面,然后按照过渡页面(我认为不会是这样(和 $.mobile.loadPage(关于 #2931,更有可能(。

一旦你标记了所有内容(加载页面后停止!:-(,在浏览器和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

这将是非推送状态设备将尝试解决的 url(例如,我的 iPad ios3.3(,它也无法正常工作。

然而,我的猜测是,当 JQM 解析 URL 时,您的链接在单击或更改页面处理程序中的某个地方失败。

如果您标记自己,请让我知道浏览器和iOS之间的区别在哪里。然后我们可以看看这是否可以修复。

好的,我在iOS Safari的调试控制台下检查了该站点。看起来 Safari 正在阻止您的对话框加载的对 facebook 的跨域请求(此处引用:不安全的 JavaScript 尝试访问 Safari 中的帧警告( - 这是调试控制台显示的警告。根据我的研究,Safari似乎比其他浏览器更严格。