0

jQuery Mobile ライブラリを使用する Web サイトがあり、次のようなリンクがいくつかあります。

<a href="#news?A">News for A zipcode</a>
<a href="#news?B">News for B</a>
<a href="#news?C">News for C</a>

最初にクリックされたリンクは、同じ#newsプレフィックスを持つ後続のすべてのリンクに対してブラウザによってキャッシュされるようです。例...

  1. ユーザーが への 2 番目のリンクをクリックする#news?Bと、ブラウザは正しく に移動します#news?B
  2. ユーザーが戻るボタンをクリックすると、ホームに戻ります
  3. ユーザーが への最初のリンクをクリックする#news?Aと、ブラウザは誤って#news?B(ステップ 1 からキャッシュされた?)に移動します。

もう一度 shift-f5 を押すと、その後にクリックしたリンクは、その時点から「キャッシュされた」リンクになります。何か案は?私はこれを自分の電話とユーザー エージェント スイッチャーを使用した Chrome の両方でテストしました (ブラウザーを偽装してモバイル デバイスと見なすため)。

編集- http://jquerymobile.com/test/docs/pages/page-dynamic.htmlで答えを見つけたと思います。この質問を更新する前に、テストと検証を行います。

4

2 に答える 2

0

OK、問題が見つかりました。hash.location がクリック/タップされたリンク (シアター) に更新されていません。

data-url 属性を使用して正しい情報を取得しました。

例:

$(document).on('pagechange', function (e, o) {
    var dataURL = $('#theater').attr('data-url'); // Use this for the Theater Location as hash is not updating
    var hash = location.hash;
    var action = hash.split('?')[0]; // #whatshot, #showtimes, #zip?{zip}, #theater?{zip},{theaterId}
    var args = dataURL.split('?')[1].split(',');
    var zip = args[0];
    var theaterId = args[1];

    // load theater movies
    codejkjk.movies.Api.GetTheaterMovies(codejkjk.movies.Mobile.Currents.ShowtimeDay(), codejkjk.movies.Mobile.Currents.ZipCode(), theaterId, function (theater) {
        codejkjk.movies.Mobile.Controls.CurrentTheater().html(theater.name);
        codejkjk.movies.Mobile.Controls.TheaterMovieList().html(
            codejkjk.movies.Mobile.Controls.TheaterMovieTemplate().render(theater)
        ).show().listview('refresh'); //.trigger('create');

        // set theaterMovieBackUrl
        theaterMovieBackUrl = hash; // set back url to current url

        $.mobile.hidePageLoadingMsg();
    });
});

Chromeコンソールでこの機能を使用しました

于 2012-05-22T15:54:29.110 に答える
0

こんな感じで使ってみてください

<a href="#news_A">News for A zipcode</a>
<a href="#news_B">News for B</a>
<a href="#news_C">News for C</a>

また、他の場所にアクセスしている場合は_、代わりに使用するコードを変更します?

また、Safari を使用すると、Chrome の UA スイッチャーよりも正確に iPhone や iPad でテストできます。ただし、Android のテストには Chrome が適しています。設定に移動して、開発者メニューを有効にする必要があります。開発者メニューには、ユーザー エージェントを切り替えるオプションがあります。

于 2012-05-22T14:09:17.350 に答える