javascript - 事件监听源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 :)
有任何想法吗?谢谢。
解决方案
如果您倾向于使用 Chrome 开发工具,那么如果您打开“源”选项卡,您将能够看到与特定类型相关的所有事件。在事件侦听器断点的右侧窗格中,您可以检查您感兴趣的事件类别。通过执行特定的事件类别,您将能够看到源文件。
它不会为您提供所有开箱即用的事件侦听器,但如果您尝试诊断您的问题,它可能会有所帮助。您还可以通过检查在 dom 节点上找到事件侦听器。在右侧窗格中应该有一个事件侦听器列表。
希望我让你一瞥。
推荐阅读
- java - 跨度未附加到他的父上下文
- powershell - 我可以使用 PowerShell 知道我使用的 DNS 服务器是否是域控制器吗?
- github - Github Desktop:Rebase vs Merge Commit,让分叉保持最新
- java - 使用 @Value 时如何使用 Mockito 模拟地图
- python - 返回python中用户制作容器的切片类型
- javascript - 更智能的代码可避免重复以在一页中控制多个播放器
- angular-animations - 动画时带有轻微曲线的上下滑动动画
- flutter - 如何更新列表
- javascript - Angular.js:输入类未按预期更改/预填充数据
- header-files - gnu ld 在带有外部 hpp 标头的程序中表示未定义对 'xxx(arg1, arg2)' 的引用