我正在构建这个程序,其中内容根据窗口宽度加载。在页面加载时,它可以正常运行,并附有正确的 HTML 和 CSS。但是当我调整页面大小时,我的 ajax 调用太多来加载适当的工作表,导致内容令人讨厌地闪烁。JQuery 似乎有一万个答案,但原生 Javascript 却没有。我已经从关于 SO 的许多问题和答案中推断出,需要超时才能在 resize 函数的 COMPLETION 上获得一个值。但是..无济于事。即使超时,它仍然会快速调用 AJAX。这是我到目前为止所做的。
function layoutHandler(){
if(window.innerWidth <= 400){
// AJAX call
} else if(window.innerWidth >= 401 && window.innerWidth <= 770){
// AJAX call
} else if(window.innerWidth >= 771 && window.innerWidth <= 1150){
// AJAX call
}else if(window.innerWidth >= 1150){
// AJAX call
}
}
window.onresize = layoutHandler;
layoutHandler();
这在页面加载时效果很好。正确的脚本就位。但是当我在 console.log 中调整浏览器的大小时,它会进行大量调用,从而使页面剧烈闪烁。根据 JQuery 解决方案,我尝试了几种方法从window.onresize
. 仍然我无法获得单个值,但持续调用。
从我读到的内容来看,我所尝试的是注释掉 window.onresize = layoutHandler;
并移至layoutHandler();
BODY 的底部。然后尝试了这个...
var resize1 = window.innerWidth;
console.log(resize1);
function myFunction() {
setTimeout(function(){
cnt();
}, 1000);
}
window.addEventListener("resize", myFunction);
function cnt(){
var resize2 = window.innerWidth;
if(resize1 != resize2){
console.log('no match');
//layoutHandler(); << this is where it makes repeated calls to the function
}
}
console.log(resize2);
即使超时,它仍然会通过调用函数对每个像素增加做出反应。除了闪烁所有呼叫的页面外,这很完美。如果我能得到一个 SINGLE 值,在调整大小事件之后,我的问题就会得到解决。寻找原生 Javascript 解决方案/建议。
提前 TY。