0

jQuery Mobileで、読み込み時にページでスクリプトを実行しようとしています。特定の基準が満たされない場合は、別のページにリダイレクトします。たとえば、PageA->PageBへのリンクをクリック->ページロードロジックを実行->PageCにリダイレクトします。初めてPageBに移動したときは、すべてうまく機能します。その後、PageAに戻ってPageBへのナビゲーションを繰り返すと、リダイレクトは発生しません(ページロードロジックは実行されません)。PageAをリロードして再試行すると、リダイレクトが発生します。

ある種のキャッシュの問題のようですか?または、別のタイプのページ読み込みイベントを使用する必要がありますか?ページがヒットするたびにページロードロジックが実行されるようにするにはどうすればよいですか?

これがコードの簡略化されたバージョンです。スクリプトは、jqmおよびjqmモバイルスクリプトの後にヘッドで呼び出されます。

$(document).bind('pageload', function (evt,data) {

    // I need the url to see if the page needs the logic executed on it
    var page = $.mobile.path.parseUrl(""+ data.url +"");
    if (page == "PageB"){
        logicRequired = "yes";    
    }
    switch (logicRequired)
    {
    //==========================
    case 'yes':

        // AJAX call to determine if redirect is needed
        $.ajax({
        url: "scripts/file.php",
        async: false,
        cache: false,
        success: function (data){
            if(data.status == 'success') {
              // do some stuff


            } else if(data.status == 'error') {
              //redirect to another page
              window.location.replace('redirectPage.html');
            }
        },
        error: function(data){
            //alert("There was an error in the ajax call");
        },
      });
      break;
      }
});
4

1 に答える 1

2

pageload外部疑似ページが DOM に取り込まれるたびに 1 回だけ起動します。したがって、そのページに戻っても、イベントは再び発生しません。ただしpagebeforeshow、疑似ページへの最初の訪問時とその後の疑似ページへの訪問時に発生するイベントを使用できます。

data-cache="false"また、ユーザーが疑似ページから離れた後に jQuery Mobile が疑似ページを削除するように、属性を使用して特定の疑似ページにフラグを立てることもできます。

于 2012-08-06T20:09:33.960 に答える