jQuery Mobile哈希链接在第一次单击链接后缓存,直到shift + f5

时间:2012-05-22 14:03:37

标签: jquery mobile jquery-mobile hash

我有一个使用jQuery Mobile库的网站,有几个链接如下所示:

<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. 用户点击#news?B的第二个链接,浏览器正确转到#news?B
  2. 用户点击后退按钮,被带回家
  3. 用户点击#news?A的第一个链接,浏览器不正确地转到#news?B(从第1步缓存?)
  4. 如果我再次转换-f5,那么我点击之后的任何链接都将成为从该点开始的“缓存”链接。有任何想法吗?我已经在手机上和使用用户代理切换台的Chrome中测试了这一点(假设我的浏览器认为它是移动设备)。

    修改 - 我想我在这里找到了答案http://jquerymobile.com/test/docs/pages/page-dynamic.html。将在更新此s.o之前进行测试和验证。问题

2 个答案:

答案 0 :(得分: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比iPhone的UA切换台更精确地测试iPhone或iPad。 Chrome适用于Android测试。 您必须转到首选项并启用开发人员菜单。在开发人员菜单中,您可以选择切换用户代理。

答案 1 :(得分:0)

好的我发现了问题,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控制台中使用了此功能