首页 > 解决方案 > 事件监听源js文件

问题描述

有没有办法可以识别特定事件的源文件?

我的事件正在被删除,因为在代码中使用了 document.open 用法。这是无法改变的。我正在尝试重用我的事件,但由于我有另一个限制,我需要知道哪些事件来自不同的 JS 文件。

EventTarget.prototype.addEventListenerBase = EventTarget.prototype.addEventListener;
EventTarget.prototype.addEventListener = function(type,listener,params)
{

    var isFromSourceX = "nameoffile.js"
    var worker_events = ['DOMContentLoaded',
     'beforeunload', "blue","devicemotion","deviceorientation",
     "error","focus","load","message","orientationchange",
     "resize","scroll","storage","click"];
    var _this=this;
    var _isEventExists = window._stackedListeners.filter(function(item){ return item.type==type && item.target==_this; })[0]===undefined?false:true;
    var isHtmlElement = this instanceof HTMLElement;
    if (worker_events.indexOf(type)>-1 && !_isEventExists && isFromSourceX) {
        window._stackedListeners.push({
            target: _this,
            type: type,
            listener: listener,
            params: params
        });
        this.addEventListenerBase(type, listener, params);
    }
};
})(self);

最终,我会将所有需要的事件推送到一个数组中,以便稍后将它们附加到网页上。但是如上所述的问题是我需要在网页中识别来源(以排除外部事件)。

ps:我没有选择使用 document.open :)

有任何想法吗?谢谢。

标签: javascripteventsevent-handling

解决方案


如果您倾向于使用 Chrome 开发工具,那么如果您打开“源”选项卡,您将能够看到与特定类型相关的所有事件。在事件侦听器断点的右侧窗格中,您可以检查您感兴趣的事件类别。通过执行特定的事件类别,您将能够看到源文件。

它不会为您提供所有开箱即用的事件侦听器,但如果您尝试诊断您的问题,它可能会有所帮助。您还可以通过检查在 dom 节点上找到事件侦听器。在右侧窗格中应该有一个事件侦听器列表。

希望我让你一瞥。


推荐阅读