我设置了窗口调整大小,以使用ajax调用创建一个div,并删除了先前创建的div(如果找到了该div)(我对其进行了测试,并且在多个对象上均未创建多余的div调整事件大小- DOM中始终只有一个div )。
但是当该div中的ajax触发时,它触发了我调整窗口大小的次数。我不确定可能是什么问题。似乎浏览器似乎缓存了创建的div,即使它仅将当前div保留在DOM中,它也会导致缓存的div触发resize事件。我禁用了CMS中的缓存。
我尝试在create_div函数以及fire_ajax函数中添加一个反跳功能-无效。
var set_up_div = debounce(function() {
if (window.innerWidth <= 767 && $('#mydiv').length == 0) {
$('#mydiv').remove();
$('#mydiv').prepend(mydiv);
}
if(window.innerWidth > 767 && $('#mydiv').length == 0) {
$('#mydiv').remove();
$('#mydiv').prepend(mydiv);
}
},500);
var fire_ajax = debounce(function() {
$.ajax({
url: 'index.php?route=extension/module/mycontroller/func1',
type: 'get',
beforeSend: function() {
},
complete: function(data){
},
success: function(data) {
$('#mydiv').html(data);
$.ajax({
url: 'index.php?route=extension/module/mycontroller/func2&data={{somedata}}',
type: 'get',
beforeSend: function() {
},
complete: function(data){
},
success: function(data) {
$('#somediv').html(data);
}
});
}
});
}, 500);
function f(){
set_up_div();
fire_ajax();
}
window.addEventListener('resize', f);
即使窗口早早被调整了n次,我也必须能够触发一次ajax,但是我调整窗口的大小越多,当调用fire_ajax函数时,就会触发更多的ajax调用,如控制台所示。