某些外部 JavaScript 运行后,事件不会被触发。我的事件是动态附加的,例如:
$("document").on("whole lot of of events", "#some.selector", doStuffFunction() {});
基于检查:
getEventListeners(node);
我假设事件正在从外部 JavaScript(某些日历插件)内的某个元素中删除,我有理由相信这可能是由于在此过程中调用了“off”函数。
有没有办法检测某个特定函数何时被调用,以便我可以“覆盖”外部函数?
最佳答案
I assume that event's are being removed from the element somewhere within external JavaScript (some calendar plugin)...
如果您已验证它确实使用盲目的 $(document).off("the events")
或类似内容删除了您的处理程序,哇我会停止吗使用该日历。
没有内置通知。不过,猴子修补off
并重新附加您的处理程序很容易:
var off = jQuery.fn.off;
jQuery.fn.off = function() {
var result = off.apply(this, arguments);
if (this === document) {
// Re-attach your handlers
}
return result;
};
或者,当真正的 off
影响您的处理程序时,完全阻止它的调用,但重新附加可能更简单。
显然,您必须在日历插件代码之前运行的代码中执行此操作。
另一个选项是编辑插件的代码以向其所有事件添加命名空间,因此 off
调用不会影响您的处理程序。 (也许甚至可以将其作为拉取请求反馈给插件作者。)
关于javascript - 在外部 javascript 中检测 jQuery off(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48901997/