![](/img/trans.png)
[英]How to add click event listener only after click event listener has been triggered?
[英]How to retrieve the `event` object if the DOMContentLoaded event has been triggered before setting a listener
有没有一种方法可以检索DOMContentLoaded
事件的event
对象,即使该event
对象已在设置eventListener之前被触发?
我发现了DOMContentLoaded
一些计时数据,并希望事件数据也可以存储。
window.performance.timing.domContentLoadedEventStart
window.performance.timing.domContentLoadedEventEnd
我想将event
对象传递给我的回调,无论它是直接调用还是作为event
监听器的结果。
var callback = function(event){
console.log(event)
}
if (document.readyState !== "loading") {
var event = window.DOMContentLoadedEvent; // doesnt exist
callback.call(this, event);
} else {
document.addEventListener('DOMContentLoaded', callback, false)
}
我想我可以创建一个新对象并返回该对象,但我希望代码尽可能小。
var event = {
srcElement: document,
target:document,
timeStamp:window.performance.timing.domContentLoadedEventEnd,
type:"DOMContentLoaded",
}
callback.call(this, event);
我要做的是添加另一个事件侦听器,如果触发该事件侦听器,该侦听器肯定会在DOMContentLoaded
事件之前注册,该处理程序将存储该event
对象。
document.addEventListener('DOMContentLoaded', function(event){
window.DOMContentLoadedEvent = event;
});
我的代码是一个非常简单的domready函数
document.addEventListener('DOMContentLoaded', function(event){
window.DOMContentLoadedEvent = event;
});
domready = function(callback) {
if (document.readyState === "loading") {
return document.addEventListener('DOMContentLoaded', callback, false);
}
return callback.call(this, window.DOMContentLoadedEvent);
}
以下代码可能驻留在外部脚本中,并且在触发DOMContentLoaded
事件后将其插入。
domready(function(event){
console.log(event)
});
是否可以在不设置其他事件侦听器的情况下检索event
数据?
检查一下:
<body>
...
<script>
var DOMevent; // global variable
document.addEventListener('DOMContentLoaded', function(event) {
DOMevent = event; // save it
}, false);
window.addEventListener('load', function () {
processEvent(DOMevent); // works fine
}, false);
function processEvent(e) {
console.log(e);
}
</script>
</body>
console.log(e);
将显示DOMevent
。
有关readyState
更多信息
https://developer.mozilla.org/zh-CN/docs/Web/API/Document/readyState
有关DOMContentLoaded
事件的更多信息
https://developer.mozilla.org/zh-CN/docs/Web/Events/DOMContentLoaded
有关“加载”事件的更多信息
例如https://developer.mozilla.org/zh-CN/docs/Web/Events/load * typo! document
-> window
!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.