Javascript 如何删除JS中的窗口调整侦听器

Javascript 如何删除JS中的窗口调整侦听器,javascript,jquery,resize,event-listener,Javascript,Jquery,Resize,Event Listener,我想使用JS删除某个网站上的事件侦听器。 当我使用下面所述的代码时,它不起作用。我在控制台中抛出数百万条错误消息 $(窗口).off(“调整大小”); 我还使用以下代码在控制台中添加了jQuery: var jq=document.createElement('script'); jq.src=”https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"; document.getElementsByTagName('h

我想使用JS删除某个网站上的事件侦听器。

当我使用下面所述的代码时,它不起作用。我在控制台中抛出数百万条错误消息

$(窗口).off(“调整大小”);
我还使用以下代码在控制台中添加了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);
// ... 给脚本加载时间,然后键入(或参见下面的非等待选项)
jQuery.noConflict();
我如何才能做到这一点?

试试这个:

const { resize } = getEventListeners(window);

resize.forEach(({ listener }) => {
  window.removeEventListener('resize', listener);
});
上述操作将导致删除所有附加到
窗口
调整大小
侦听器

是一个实用函数,它不是JavaScript规范的一部分。我不会在用于生产的代码中使用它

另一个看起来值得研究而不是
getEventListeners
的想法是拦截
addEventListener
函数

const addEventListener = window.addEventListener;

window.addEventListener = (...args) => {
  if (args[0] === 'resize') {
    console.log('Resize event attached!', args[1]);
  }
  addEventListener(...args);
}
我们甚至可以更进一步,阻止所有resize事件处理程序连接

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);
  }
}

也许上述内容在您的情况下很有用。

只有知道事件并引用了事件处理程序函数,才能删除事件侦听器。它正在工作!非常感谢,你是山羊❤️ 我相信它会删除所有调整大小的侦听器,但在我的情况下,这并不重要。您知道如何从控制台外部使其工作吗?显然,
getEventListeners
是控制台API。当我在Chrome扩展的
content.js
脚本中运行它时,它显示了一个错误“getEventListeners未定义”。我刚刚读了你在代码示例下写的东西哈哈,我该如何在prod中实现它呢?很遗憾,
getEventListeners
是“控制台实用程序”的一部分,只在控制台中运行。@TacoHemingway我修改了上面的答案,加入了拦截
addEventListener
函数的想法。通过这种方式,您还可以捕获正在连接的事件侦听器。我将研究代码,它可能对我有用。非常感谢。