如果在设置侦听器之前触发了 DOMContentLoaded 事件,如何检索“事件”对象
How to retrieve the `event` object if the DOMContentLoaded event has been triggered before setting a listener
有没有办法检索DOMContentLoaded
事件的event
对象,即使它在设置事件侦听器之前已经触发?
我找到了一些DOMContentLoaded
的时间数据,并希望事件数据也可以存储。
window.performance.timing.domContentLoadedEventStart
window.performance.timing.domContentLoadedEventEnd
我想将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/en-US/docs/Web/API/Document/readyState
关于DOMContentLoaded
活动
https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded
有关"加载"事件的更多信息
https://developer.mozilla.org/en-US/docs/Web/Events/load *错别字的例子! document
-> window
!
相关文章:
- 如何从jQuery的事件对象中检索属性
- 如果在设置侦听器之前触发了 DOMContentLoaded 事件,如何检索“事件”对象
- 在黑莓网页中检索方向更改事件
- 检索在onchange javascript事件中创建的javascript变量
- 如何使用jQuery检索onSubmit事件
- 在javascript中使用API v3检索Google日历事件
- CRM 2013 - 事件解决 - 检索新的状态原因
- Meteor.js:如何检索事件对象的父元素的数据属性
- 在 React 组件中检索自定义 data-* 属性值(无事件)
- 使用 Google Maps API 侦听器时检索 JavaScript 的事件对象
- 在《春面孔》中,点击事件从何而来
- 如何在没有任何事件的情况下从 document.ready 上的服务器端检索值
- 如何在帮助程序或事件中检索对象的内部_id
- 如何在我的 Web 应用程序中检索和显示 Outlook/Exchange 日历事件
- 从谷歌日历 API 中的事件列表中检索实例
- 如何向Gmap3标记添加一些新变量,并在鼠标事件触发时检索它们
- 流星:如何使用模板事件检索“{{this}}-value”
- 在jquery文件上传插件's fileuploadsend事件中检索jqXHR
- 从JQuery图像中的error()事件中检索HTTP状态码
- 从流星事件中检索自定义数据属性的最佳方式