只是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);
答案 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
可以在运行时在0
和1
之间多次动态更改。如果只可能更改一次,则可以使其更简单。
答案 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);