背景选项卡上的页面未正确加载

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;
});

这种方法的缺点是,只要选项卡离开焦点然后又回到焦点,它就会重新加载所有数据。