मैं पता लगाने के लिए कोशिश कर रहा हूँ कि क्या वर्तमान जावास्क्रिप्ट फ़ाइल है कि निष्पादित किया जा रहा है तुल्यकालिक शामिल किया गया है (एक नियमित रूप से स्क्रिप्ट टैग के माध्यम से)पता लगाने के लिए कैसे है कि क्या आपकी जावास्क्रिप्ट तुल्यकालिक या असमकालिक शामिल किया जा रहा है
<script src="myscript.js"></script>
या असमकालिक एक डालने के माध्यम से डोम में स्क्रिप्ट तत्व प्रोग्राम के,
var script = document.createElement('script')
script.src = 'myscript.js'
document.body.appendChild(script)
और फलस्वरूप कि क्या document.write
की तरह कुछ या इस्तेमाल किया जा सकता नहीं। मैंने एक पागल समाधान निकाला है जो परीक्षण करता है कि document.write
काम करता है, this gist देखें।
असल में, यह तत्व लिखने के लिए document.write
का उपयोग करके काम करता है - मैंने एक खाली स्क्रिप्ट टैग चुना है। फिर यह डीओएम से यह निर्धारित करने के लिए पूछता है कि क्या स्क्रिप्ट तत्व सफलतापूर्वक लिखा गया था। यदि यह था - स्क्रिप्ट को समकालिक रूप से शामिल किया जाना चाहिए, यदि यह नहीं था - इसे असीमित रूप से शामिल किया गया था।
यह समाधान ओपेरा को छोड़कर अब तक परीक्षण किए गए सभी ब्राउज़रों (आईई 7 + सहित सभी प्रमुख) में काम करता है।
सवाल यह है: क्या कोई बेहतर समाधान है?
नोट: मैंने document.readyState
की जांच करने का भी प्रयास किया है, लेकिन यह IE में सहायक नहीं प्रतीत होता है।
यह भी ध्यान दें: मुझे एक व्याख्यान की आवश्यकता नहीं है कि document.write
बुरा है। मुझे पता है।
अद्यतन: कि इसके अलावा में ओपेरा पर काम नहीं करने के लिए पता चला है, मेरी तकनीक भी IE और अन्य ब्राउज़रों में कुछ मामलों में अविश्वसनीय है - document.write
या समय या कैशिंग परिदृश्य के आधार पर काम नहीं हो सकता है। spec उतना ही कहता है।
क्या आप वाकई व्याख्यान की आवश्यकता नहीं है ??? मैं आपको एक देने के लिए तैयार था ...: पी – Domenic