在setInterval(JQuery)之后,如何阻止Iframe不断重新加载

时间:2018-09-17 14:52:16

标签: javascript jquery html

只是js新手

在setinterval之后,如何防止页面不不断重新加载?

基本上,它需要检查外部JSON文件中的值0/1,并显示和隐藏Iframe src(它需要每5秒检查一次文件中的更改),仅在值更改时才重新加载。 / p>

是否有办法在本地描述值或将其缓存?

function ScreenSwitch(){
$.getJSON(screenNumberUrl, (data) => {
  if(data.ScreenState == 0){
    $("#os-iframe").attr("src", "about:blank");
  } else {
    $("#os-iframe").attr("src", "OverallStandings.html");
  }
});
}
ScreenSwitch();
setInterval(ScreenSwitch, 5000);

3 个答案:

答案 0 :(得分:1)

您需要更改逻辑以存储先前检索的值。然后,您将知道该值是否在下一个请求上更改,以便更新src中的iframe。尝试这个:

function ScreenSwitch() {
  $.getJSON(screenNumberUrl, (data) => {
    if (previousScreenState != data.ScreenState) {
      $("#os-iframe").attr("src", data.ScreenState == 0 ? 'about:blank' : 'OverallStandings.html');
    }
    previousScreenState = data.ScreenState;
  });
}

var previousScreenState;
ScreenSwitch();
setInterval(ScreenSwitch, 5000);

以上逻辑假设data.ScreenState可以在运行时在01之间多次动态更改。如果只可能更改一次,则可以使其更简单。

答案 1 :(得分:0)

$("#os-iframe").attr("src"将加载iframe。为什么不

var url = "screenNumberUrl"+"&rnd="+Date.getTime(); // stop caching
$.get(url,function(data) { 
  if (data.ScreenState == 0) $("#someDiv").hide();
  else $("#someDiv").load("OverallStandings.html").show();

})

那么您甚至不需要iFrame

答案 2 :(得分:0)

@Rory McCrossan

进行了微小的更改,并且按我想要的方式工作。谢谢。

 function ScreenSwitch() {
  $.getJSON(screenNumberUrl, (data) => {

   if (previousScreenState != data.ScreenState) {
    $("#os-iframe").attr("src", data.ScreenState == 0 ? 'about:blank' : 'OverallStandings.html');
   }
   previousScreenState = data.ScreenState;
 });
}


ScreenSwitch();
setInterval(ScreenSwitch, 5000);