背景选项卡上的页面未正确加载
Page on background tab not loading properly
我将 Polymer 1.0 与 jQuery 一起使用,并创建了一个小型单页应用程序。但是,当我 "Open link in new tab" 时,页面不会加载。更具体地说,它以模板形式加载并触发 ajax 请求以获取数据,但该数据的 none 被填充到模板中。比如简化版:
$(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()
函数的 none 正在进行任何更改到页面。而且,是的,在打开的选项卡中加载相同的页面工作正常。
这有点老套,但我把我在 .ready()
上所做的一切都放到了一个名为 loadDataAndPopulateToken()
的函数中,然后除了 运行 这个函数之外 [=11] =] 我也把它绑定到 window focusing:
$(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;
});
这种方法的缺点是,只要选项卡离开焦点然后又回到焦点,它就会重新加载所有数据。
我将 Polymer 1.0 与 jQuery 一起使用,并创建了一个小型单页应用程序。但是,当我 "Open link in new tab" 时,页面不会加载。更具体地说,它以模板形式加载并触发 ajax 请求以获取数据,但该数据的 none 被填充到模板中。比如简化版:
$(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()
函数的 none 正在进行任何更改到页面。而且,是的,在打开的选项卡中加载相同的页面工作正常。
这有点老套,但我把我在 .ready()
上所做的一切都放到了一个名为 loadDataAndPopulateToken()
的函数中,然后除了 运行 这个函数之外 [=11] =] 我也把它绑定到 window focusing:
$(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;
});
这种方法的缺点是,只要选项卡离开焦点然后又回到焦点,它就会重新加载所有数据。