2012-04-28 11 views
4

に仕事をdoesnot次のコードjQueryのモバイルデータのrel =「ダイアログは、」iPhoneやiPad

<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の携帯電話のブラウザ上で動作します。しかし、iPhoneやipadのブラウザで動作しません。リンクがクリックされるように見えますが、ダイアログは表示されません。それは非常に遅れているか、まったく動作していません。

ページの応答時間と読み込み時間はかなり速く、通常のデスクトップブラウザではシームレスに動作します。その非常に小さなページが読み込まれます。

私はそれが動作するようにしようとする必要がありますヒント?

+0

jQMのどのバージョンを使用していますか? – uday

+0

あなたの '/ Client/Events?ID = ...'ページがエラーなしでHTMLを返すことは確かですか? – shanabus

+0

JQM - 1.1とはい、htmlが正しく返されます。これはすべてのデスクトップブラウザで動作します。 – MoXplod

答えて

2

[OK]をクリックして、iOS Safariのデバッグコンソールでサイトを確認しました。 Safariは、あなたのダイアログがロードされているドメイン(Facebook:Unsafe JavaScript attempt to access frame warning in Safari)のクロスドメイン要求をブロックしているようだ。これはデバッグコンソールに表示された警告だ。私の研究から、Safariは他のブラウザよりも厳しいです。

私はそれはあなたが使用しているとJQMは、このようなリンクを作るために何を理解していないのURLに関係している疑いがある
+0

あなたはios safariでデバッグする方法を共有できますか?火かぶりのようなものがありますか? – MoXplod

+0

iPadでデバッグコンソールを有効にするには、[設定]、[Safari]、[詳細設定]の順に選択します。それは非常に良いコンソールではありませんが、それは助けになります。 – servarevitas3

+0

これは、モバイルWebサイトをデバッグするもう1つの方法です。http://jsconsole.com/remote-debugging.html – servarevitas3

4

/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; 
     } 
     ... 

クリックハンドラによってこのすべての方法を行うと、あなたはさまざまな理由のために機能を終了するすべての戻りを、フラグを確認してください。

clickハンドラを使用すると(それほど長くない)、changePageを実行していることがわかるので、changePageハンドラをフォローしてフラグを立てます。 changepageを介してすべての道

// Show a specific page in the page container. 
    $.mobile.changePage = function(toPage, options) { 
    console.log("flag x - made it to changepage"); 
    ... 

移動してtransitionpages(それは私が考えることではありません)と$ .mobile.loadPageに従います。これは、ここに行(#3232)を中心に開始する必要があります(約#2931、おそらく)。

すべてのフラグを付けたら(loadpage!:-)の後に停止し、ブラウザとipadでページをリロードして、どこからipadが失敗したかを確認します。おそらく1時間かかりますが、後でJQMがどのように動作するかをよく理解するでしょう:-)

もう一つの理由は、プッシュステートハンドラ(およそ#3781)です。ブラウザがpushstateをサポートしている場合(デスクトップはい、iOS ...わからない、iOS3いいえ)あなたがあなたのページから行くので、もしあなたが、素敵なURLを行うことができます。ダイアログ

http://root.com/Client/Events/StubCheckIn/innasf?stubID=96e63aee-1465-4ecd-ad35-123f240d09ff 

root.com/client/events/checkin/innasf 

をお使いのブラウザは、まだページのURLが表示されます - おそらくので、 changehashをfalseに設定してください(これはURLを保持します)。この(私は信じている)あなたのURLをする必要がありますので、pushstateハンドラによって行われます。

root.com/client/events/checkin/innasf#http://root.com/Client/Events/StubCheckIn/innasf?stubID=96e63aee-1465-4ecd-ad35-123f240d09ff&some-dialog-ending 

これは、URL非pushstateデバイスになります(例えば、私のiPad ios3.3)を解決しようとします。ここで、それも動作しません。

しかし、JQMによってURLが解決されたときに、リンクがclickまたはchangepageハンドラのどこかで失敗すると思います。

あなた自身にフラグを立てたら、ブラウザとiOSの違いがどこに表示されるか教えてください。それが解決可能かどうかを確認することができます。

+0

その答えは、この事をデバッグする方法について多くの洞察をもたらし、JQMにはファイル拡張子のないリンクの検出に問題があることに驚いています。古い学校のようだ!私はjQMをデバッグする時間があることを望みますが、私はしません! :)たぶん、私は今のところ、対話の代わりに、それを普通のページにするより簡単なアプローチをしなければならないでしょう。ご回答有難うございます。 – MoXplod

+0

問題ありません。あなたが周りを回って、ポストバックしたら、私の2セントが助けになるかどうかチェックします。 – frequent

+0

pushstateはjqmで修正されました。あなたのページをipadでもう一度試しました。まだ動作しません。だから、一つの選択肢が除外された。 – frequent

関連する問題