我正在使用带有jQuery的Polymer 1.0,并创建了一个小的单页应用程序。但是,当我在新标签页"中打开链接时,该页面无法加载。更具体地说,它以模板形式加载并触发ajax请求以获取数据,但不会将任何数据填充到模板中。例如,简化版本:
$(document).ready(function(){
url = '/ajax/get_data';
$.post(url, '', function(data) {
if (data.data.id !== undefined & data.data.id > 0) {
$('.gt-info-location').text(data.data.name);
$('.gt-city-population').text(data.population);
$('.gt-city-timezone').text(data.data.timezone);
$('.gt-city-county').text(data.data.county);
$('google-map')[0].latitude = data.data.latitude;
$('google-map')[0].longitude = data.data.longitude;
$('#location-frontpage').css('background',"url('pictures/"+data.data.image_file+"') center / cover");
$('#location-back').css('background',"url('pictures/"+data.data.image_file+"') center / cover");
}
});
});
我知道$.post
正在发生并从Web请求日志中返回正确的数据,但.text()
或.css()
函数都没有对页面进行任何更改。并且,是的,在打开的选项卡中加载相同的页面可以正常工作。
答案 0 :(得分:0)
它有点笨拙,但是我把我.ready()
上所做的一切都放到了一个名为loadDataAndPopulateToken()
的函数中,然后在.ready()
上运行该函数我也将它绑定到窗口聚焦:
$(document).ready(function(){
// initial token load (doesn't work if in background tab)
loadDataAndPopulateToken();
// reload the token data whenever the page comes into focus
window.onfocus = loadDataAndPopulateToken;
});
这种方法的缺点是,只要标签超出焦点,然后再重新加载,就会重新加载所有数据。