![](/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.