【问题标题】:Prevent or Listen for a user removing event listeners in developer tools?防止或侦听用户在开发人员工具中删除事件侦听器?
【发布时间】:2020-10-02 04:55:46
【问题描述】:

如何防止或监听用户在开发者工具中移除事件监听器?

这可能吗?

在上面的示例中,当用户删除“事件侦听器”时,我想对该操作采取行动。是否有事件监听器的事件监听器?

【问题讨论】:

  • 可以在setInterval中重新添加监听器。
  • 我不想重新添加它。我想要的是在我从开发工具中删除事件侦听器时显示警报消息
  • 我能想到的唯一办法就是拦截EventTarget.removeEventListener。此处显示了一种方法:gist.github.com/alessioalex/fc536ef87713d0a9ed89
  • delete EventTarget.prototype.removeEventListener.

标签: javascript html google-chrome-devtools event-listener


【解决方案1】:

const removeEventListenerOriginal = EventTarget.prototype.removeEventListener;
const p = document.querySelector("p");
const onClick = e => console.log("clicked", e.target.tagName);


EventTarget.prototype.removeEventListener = function(...args) {
  const [eventType, handler, capture] = args;

  console.log(`Event Listener Removed For`, this, {
    eventType,
    handler,
    capture
  });

  // your logic here

  // call the original function or not. its up to you
  removeEventListenerOriginal.call(this, ...args);
  // or removeEventListenerOriginal.apply(this, args);
}

p.addEventListener("click", onClick);
// try removing the event from dev console
<p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo</p>

【讨论】:

    猜你喜欢
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    • 2022-08-03
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 2023-03-29
    相关资源
    最近更新 更多