मैं एक DOMContentLoaded
घटना के साथ एक स्क्रिप्टDOMContentLoaded या लोड ईवेंट हैंडलर के साथ Async-loaded स्क्रिप्ट्स को नहीं कहा जा रहा है?
document.addEventListener('DOMContentLoaded', function() {
console.log('Hi');
});
handler- कौन सा मैं asynchronously-
<script async src=script.js></script>
हालांकि, ईवेंट हैंडलर कहा जाता है कभी नहीं है लोड हो रहा है कर रहा हूँ मिल गया है। अगर मैं इसे तुल्यकालिक रूप से लोड करता हूं-
<script src=script.js></script>
यह ठीक काम करता है।
(यहां तक कि अगर मैं एक load
घटना के लिए DOMContentLoaded
घटना बदलने के लिए, यह कभी नहीं कहा जाता है।)
क्या देता है? ईवेंट हैंडलर को पंजीकृत किया जाना चाहिए चाहे ब्राउजर द्वारा स्क्रिप्ट कैसे लोड की जाती है, नहीं?
संपादित: यह DOMContentLoaded
साथ क्रोम 18.0.1025.11 बीटा पर काम नहीं करता है, लेकिन, यह फ़ायरफ़ॉक्स 11 बीटा पर करता है (लेकिन load
साथ ऐसा नहीं होता है)। जाओ पता लगाओ।
ओएच महान भगवान और जावा के भगवान, प्रार्थना मेरे तरीके की गलती दिखाओ!
स्क्रिप्ट asynchrounously लोड हो रहा करके, आप ब्राउज़र है कि यह पन्ने के अन्य हिस्सों की स्वतंत्र रूप से है कि स्क्रिप्ट लोड कर सकते हैं कह रहे हैं। इसका अर्थ यह है कि पृष्ठ लोडिंग समाप्त हो सकता है और आपकी स्क्रिप्ट लोड होने से पहले और ईवेंट के लिए रजिस्टरों से पहले डोमकंटेंट लोड हो सकता है। यदि ऐसा होता है, तो आप ईवेंट को याद करेंगे (जब आप इसके लिए पंजीकरण करते हैं तो यह पहले से ही हुआ है)। – jfriend00
ओह-इंटेरेस्टस्टिंग। तो वास्तव में मुझे पहले से निकाल दिए गए कार्यक्रम के लिए परीक्षण करना चाहिए - (** ** संपादित करें: वास्तव में, क्योंकि मैं स्क्रिप्ट के बाद * घटना फायरिंग पर भरोसा करता हूं, यह बिल्कुल असीमित नहीं होना चाहिए)। ठंडा। इसे एक उत्तर के रूप में लिखें और आप एक अपवित्र हो सकते हैं :) – user1203233