我有一个使用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
前缀的所有后续链接。 例。。。
- 用户点击第二个链接
#news?B
,浏览器正确转到#news?B
- 用户单击后退按钮,被带回家
- 用户点击第一个链接
#news?A
,浏览器错误地转到#news?B
(从步骤1缓存?
如果我再次 shift-f5,之后我单击的任何链接都会从该点开始成为"缓存"链接。 有什么想法吗? 我已经在我的手机上和带有用户代理切换器的 Chrome 中对此进行了测试(伪造我的浏览器以认为它是移动设备(。
编辑 - 我想我已经在这里找到了答案,http://jquerymobile.com/test/docs/pages/page-dynamic.html。将在更新此 s.o. 问题之前进行测试和验证。
尝试像这样使用它
<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 或 iPad 上比 chrome 的 UA 切换器更精确地对其进行测试。不过,Chrome 适用于 Android 测试。您必须转到首选项并启用开发人员菜单。在开发人员菜单中,您将可以选择切换用户代理。
好的,我发现了问题,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控制台中使用了此功能