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

时间:2016-03-29 16:27:22

标签: jquery ajax polymer polymer-1.0

我正在使用带有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()函数都没有对页面进行任何更改。并且,是的,在打开的选项卡中加载相同的页面可以正常工作。

1 个答案:

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

这种方法的缺点是,只要标签超出焦点,然后再重新加载,就会重新加载所有数据。