如何在 JS 中删除 window resize Listener
How to remove a window resize Listener in JS
我想删除一些使用 JS 的网站的事件监听器。
当我按照 here 所述使用以下代码时,它不起作用。我在控制台中抛出了数百万条错误消息。
$(window).off("resize");
我还使用以下代码在控制台中添加了 jQuery:
var jq = document.createElement('script');
jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(jq);
// ... give time for script to load, then type (or see below for non wait option)
jQuery.noConflict();
我怎样才能做到这一点?
试试这个:
const { resize } = getEventListeners(window);
resize.forEach(({ listener }) => {
window.removeEventListener('resize', listener);
});
以上应该会导致删除附加到 window
的所有 resize
侦听器。
getEventListeners 是一个实用函数,不属于 JavaScript 规范。我不会在用于生产的代码中使用它。
另一个看起来值得研究而不是 getEventListeners
的想法是拦截 addEventListener
函数。
const addEventListener = window.addEventListener;
window.addEventListener = (...args) => {
if (args[0] === 'resize') {
console.log('Resize event attached!', args[1]);
}
addEventListener(...args);
}
我们甚至可以更进一步,阻止所有调整大小事件处理程序附加。
const addEventListener = window.addEventListener;
window.addEventListener = (...args) => {
if (args[0] === 'resize') {
console.log('Resize event trying to attach, but it is being blocked');
} else {
addEventListener(...args);
}
}
也许以上对你的情况有用。
我想删除一些使用 JS 的网站的事件监听器。
当我按照 here 所述使用以下代码时,它不起作用。我在控制台中抛出了数百万条错误消息。
$(window).off("resize");
我还使用以下代码在控制台中添加了 jQuery:
var jq = document.createElement('script');
jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(jq);
// ... give time for script to load, then type (or see below for non wait option)
jQuery.noConflict();
我怎样才能做到这一点?
试试这个:
const { resize } = getEventListeners(window);
resize.forEach(({ listener }) => {
window.removeEventListener('resize', listener);
});
以上应该会导致删除附加到 window
的所有 resize
侦听器。
getEventListeners 是一个实用函数,不属于 JavaScript 规范。我不会在用于生产的代码中使用它。
另一个看起来值得研究而不是 getEventListeners
的想法是拦截 addEventListener
函数。
const addEventListener = window.addEventListener;
window.addEventListener = (...args) => {
if (args[0] === 'resize') {
console.log('Resize event attached!', args[1]);
}
addEventListener(...args);
}
我们甚至可以更进一步,阻止所有调整大小事件处理程序附加。
const addEventListener = window.addEventListener;
window.addEventListener = (...args) => {
if (args[0] === 'resize') {
console.log('Resize event trying to attach, but it is being blocked');
} else {
addEventListener(...args);
}
}
也许以上对你的情况有用。