2013-05-08 12 views
6

मैंने अभी w3school से जावास्क्रिप्ट सीखना शुरू कर दिया है और मुझे पता चला है कि "आप केवल HTML आउटपुट में document.write का उपयोग कर सकते हैं। यदि आप इसका उपयोग करते हैं दस्तावेज़ लोड हो गया है, पूरा दस्तावेज़ ओवरराइट किया जाएगा। "दस्तावेज़ के लिए जावास्क्रिप्ट क्यों लोड नहीं हो रहा है .readyState === "पूर्ण"

<html> 
    <head> 
     <title>ashish javascript learning</title> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    </head> 
    <body> 
     <p> sample html with javascript </p> 
     <script> 
      document.write("<h1>this is heading</h1>"); 
      document.write("<p>this is sample para</p>"); 
     </script> 
     <script> 
      if(document.readyState === "complete"){ 
       loaded(); 
      } 
      function loaded(){ 
       document.write("<p>loading content after the document has been loaded"); 
      } 
     </script> 
    </body> 
</html> 

कोड अभी भी पुराने मूल्य दिखा रहा है और वेब पृष्ठ की सामग्री को अधिलेखित नहीं कर रहा है: तो मैं वैधता की जांच करने के लिए निम्न कोड लिखने के लिए कोशिश की है। क्या आप मुझे सुझाव दे सकते हैं कि मैं गलत तरीके से क्या कर रहा हूं।

+3

आप 'document.write' का उपयोग क्यों कर रहे हैं? –

+4

@ आशीष: विश्वसनीय जावास्क्रिप्ट संसाधनों में से एक [** जावास्क्रिप्ट एमडीएन **] (https://developer.mozilla.org/en/docs/JavaScript) होगा जिसमें अच्छे संसाधनों और मार्गदर्शिकाओं के बहुत सारे लिंक होंगे। – Nope

+1

मूल रूप से आपके प्रत्येक 'document.write' कॉल प्रारंभिक पृष्ठ निर्माण के दौरान होता है। 'If' हिस्सा सिर्फ 'झूठी' का मूल्यांकन करेगा और 'लोड()' कभी नहीं कहा जाएगा। – devnull69

उत्तर

12

बार जब आप document.readyState === "complete" परीक्षण कर रहे हैं पर, दस्तावेज़ के readyState "पूर्ण" नहीं है, यह "लोड हो रहा" है, तो कुछ नहीं होता है, और loaded कभी नहीं कहा जाता है।

readyState बदलने के लिए आप सुन सकते हैं, और तो जांच अगर यह होता है "पूरा" को देखने के लिए (या window.onload जो आसान है करने के लिए सुनो):

document.onreadystatechange = function() { 
    if(document.readyState === "complete"){ 
    loaded(); 
    } 
} 
+0

यदि मेरा दस्तावेज़ जनरेट करने के लिए पीडीएफ के साथ पॉपअप है, तो पॉपअप खुलता है और इसकी पूरी तैयार स्थिति में है लेकिन फ़ाइल अभी तक लोड नहीं हुई है, क्या आप धन्यवाद दे सकते हैं। – shareef

4

क्योंकि तंत्र घटना पर आधारित है। एक बार जब डोम वास्तव में लोड हो जाता है, तो आपको केवल इसका उपयोग करना चाहिए, इसलिए यह व्यर्थ है।

मूल्यांकन किया जाता है, लेकिन मूल्यांकन के समय document.readyState == "complete"false है, इसलिए कुछ भी नहीं होता है।

काम करने के लिए सरल तरीका:

window.onload = function() { 
    loaded(); 
}; 
3

आपको क्या करने की जरूरत है readystatechange घटना करने के लिए एक समारोह हुक तो readystate मूल्य के लिए जांच है।

document.onreadystatechange = function() { 
    if (document.readyState === 'complete') { 
     initApplication(); 
    } 
} 
0

लिखने इस तरह, आप आप

document.onreadystatechange = function(){ 
    if(document.readyState == 'complete'){ 
     document.write('document is overwrite') 
    } 
} 
+0

क्या आप समझा सकते हैं क्यों? सिर्फ कोई स्पष्टीकरण नहीं दे रहा है जो कि रचनात्मक नहीं है, और सवाल का हिस्सा क्यों नहीं देता है – glls

0

कोई स्पष्टीकरण के लिए खेद चाहते परिणाम मिल जाएगा; जब जावास्क्रिप्ट पर कोड निष्पादित होता है तो डोम पूरा नहीं होता है, इसलिए दस्तावेज़ का तैयार चरण 'पूर्ण' नहीं होता है, तो init अनुप्रयोग मज़ेदार नहीं कहा जाएगा; यदि आप initAplication फ़ंक्शन को कॉल करना चाहते हैं, तो आपको दस्तावेज़ में एक ट्रिगर जोड़ना होगा। मैं 'document.onreadystatechange' जैसे ट्रिगर जोड़ता हूं। दस्तावेज़ का राज्य बदल जाता है जब "document.onreadystatechange" को कॉल किया जाएगा; इसलिए जब दस्तावेज़ भरी हुई है, "document.onreadystatechange"

0

कई उदाहरण और स्पष्टीकरण के साथ एक उत्कृष्ट संसाधन के नाम से जाना जाएगा: https://developer.mozilla.org/en/docs/Web/API/Document/readyState

तो आपके मामले में यह लागू होता है:

document.onreadystatechange = function() { 
    if (document.readyState === "complete") { 
    initApplication(); 
    } 
} 
संबंधित मुद्दे