डॉक्यूमेंट.राइट को "बुरा व्यवहार" क्यों माना जाता है?


363

मुझे पता document.writeहै कि बुरा अभ्यास माना जाता है; और मैं तीसरे पक्ष के विक्रेता को प्रस्तुत करने के कारणों की एक सूची को संकलित करने की उम्मीद कर रहा हूं कि वे document.writeअपने विश्लेषिकी कोड के कार्यान्वयन में उपयोग क्यों नहीं करें ।

document.writeनीचे एक बुरा अभ्यास के रूप में दावा करने के लिए कृपया अपना कारण शामिल करें ।

जवाबों:


243

अधिक गंभीर समस्याओं में से कुछ:

  • document.write (इसके बाद DW) XHTML में काम नहीं करता है

  • डीडब्ल्यू सीधे डोम को संशोधित नहीं करता है, और अधिक हेरफेर को रोकने (इस का प्रमाण खोजने की कोशिश कर रहा है, लेकिन यह सबसे अच्छा स्थिति में है)

  • पेज लोड होने के बाद निष्पादित DW पृष्ठ को अधिलेखित कर देगा, या नया पृष्ठ लिख देगा, या काम नहीं करेगा

  • डीडब्ल्यू निष्पादित करता है जहां सामना किया गया है: यह किसी दिए गए नोड बिंदु पर इंजेक्ट नहीं कर सकता है

  • DW प्रभावी रूप से क्रमबद्ध पाठ लिख रहा है, जो DOM के वैचारिक रूप से काम करने का तरीका नहीं है, और बग बनाने के लिए एक आसान तरीका है (.innerHTML की भी यही समस्या है)

सुरक्षित और डोम के अनुकूल डोम हेरफेर विधियों का उपयोग करना बेहतर है


39
-1, यह डोम को बिल्कुल संशोधित करता है। बाकी सब ठीक है। जबकि मैं संरचना और विधियों पर निर्भर रहने के आग्रह को समझता हूं जो आपको नुकसान से बचा सकते हैं, यह बाथटब के साथ बच्चे को बाहर फेंकने का मामला हो सकता है।
cgp

7
FireBug DOM का सही प्रतिनिधित्व नहीं है। यह mozilla का HTML को DOM में पार्स करने का प्रयास है। फ़ायरबग डोम दृश्य में आप HTML को पूरी तरह से तोड़ सकते हैं।
फ्लाईस्वाट

8
DOM, पेज को रेंडर करने के लिए उपयोग की जाने वाली डेटा संरचना है और जैसे कि अल्फ़ा और उपयोगकर्ता के पेज पर ओमेगा होता है। आप उस HTML! = DOM के सही हैं, लेकिन यह इस सवाल के लिए सारहीन है कि DW DW द्वारा संशोधित है या नहीं। यदि DW ने DOM को संशोधित नहीं किया है, तो आप स्क्रीन को नहीं देखते हैं - यह सभी ब्राउज़रों के लिए सत्य है और हमेशा तब तक रहेगा जब तक कि पेज को रेंडर करने के लिए DOM का उपयोग किया जाता है।
cgp

8
"DW निष्पादित होता है जहां सामना किया गया" - हमेशा नुकसान नहीं, वास्तव में इसे कुछ चीजों के लिए एक फायदा माना जा सकता है, उदाहरण के लिए, स्क्रिप्ट तत्वों को जोड़ना (वास्तव में केवल एक चीज के बारे में जो मैं DW के लिए उपयोग करता हूं, और फिर भी मैं दो बार सोचूंगा) ।
nnnnnn

7
@RicardoRivaldo हाँ, वे करते हैं, अगर document.writeदस्तावेज़ को लोड करने के बाद बुलाया जाता है
इज़्काटा

124

वास्तव में कुछ भी गलत नहीं है document.write, प्रति से। समस्या यह है कि इसका दुरुपयोग करना वास्तव में आसान है। सकल, यहाँ तक कि।

एनालिटिक्स कोड (जैसे Google Analytics) की आपूर्ति करने वाले विक्रेताओं के संदर्भ में, यह वास्तव में उनके लिए इस तरह के स्निपेट्स वितरित करने का सबसे आसान तरीका है

  1. यह लिपियों को छोटा रखता है
  2. उन्हें पहले से स्थापित ऑनलोड घटनाओं को ओवरराइड करने या सुरक्षित रूप से ऑनलोड घटनाओं को जोड़ने के लिए आवश्यक अमूर्त सहित के बारे में चिंता करने की ज़रूरत नहीं है
  3. यह बेहद संगत है

जब तक आप इसका इस्तेमाल करने के बाद दस्तावेज़ लोड होने की कोशिश नहीं करते हैं ,document.writeस्वाभाविक बुराई, मेरी विनम्र राय में है।


3
document.write HTML पार्सर के लिए वास्तव में भयानक चीजें करता है, और केवल साधारण मामलों में "बेहद संगत" है।
olliej

27
एक एनालिटिक्स टैग की प्रविष्टि की तरह? यही है, आखिरकार, मूल प्रश्न का हिस्सा। और बहुत संगत से, मेरा मतलब है कि document.write विधि के लिए सिर्फ कच्चे ब्राउज़र का समर्थन।
पीटर बैली

Chrome / IE / Safari / Opera / FireFox के नवीनतम संस्करणों के साथ काम करने वाली कोई भी चीज़ संगत मानी जाती है।
पचेरियर

2
अधिभार घटनाएँ? और किस addEventListenerलिए है?
m93a

Chrome document.writeकुछ विशेष शर्तों के पूरा होने पर स्क्रिप्ट सम्मिलित करने वाले इनवोकेशन नहीं चलाएगा ।
फ्लिम जूल

44

document.writeHTML5 Boilerplate index.html उदाहरण से एक और वैध उपयोग आता है ।

<!-- Grab Google CDN's jQuery, with a protocol relative URL; fall back to local if offline -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.6.3.min.js"><\/script>')</script>

मैंने json2.js JSON parse / stringify polyfill ( IE7 और उसके बाद के संस्करण की आवश्यकता) का उपयोग करने के लिए एक ही तकनीक देखी है ।

<script>window.JSON || document.write('<script src="json2.js"><\/script>')</script>

11
यहाँ बुरा उपयोग नहीं है, लेकिन फिर भी "बेहतर" डोम हेरफेर कार्यों का उपयोग करने के लिए - यहां तक ​​कि Google Google Analytics के लिए भी करता है। स्निपेट यहां है
बीएमनर

8
@ बीएमएनआर यदि आप scriptDOM मैनिपुलेशन के माध्यम से एक तत्व सम्मिलित करते हैं , तो क्या इसे सिंक्रोनाइज़ किया गया है? जब तक यह नहीं है, यह एक प्रतिस्थापन नहीं है।
जॉन ड्वोरक

2
@ जानवरवाक - अच्छा बिंदु; DOM जोड़तोड़ का उपयोग करते समय, ब्राउज़र आमतौर पर स्क्रिप्ट को अतुल्यकालिक रूप से लोड करेंगे। onloadजब आप एसिंक्रोनसली लोड की गई स्क्रिप्ट उपयोग के लिए उपलब्ध हो, तो यह निर्धारित करने के लिए आप DOM ईवेंट का उपयोग कर सकते हैं।
बीएमएन

1
@JDDvorak इसे बाहरी रूप से लोड किया जाता है यदि यह बाहरी नहीं है (नहीं है src) । अन्यथा इसे "जितनी जल्दी हो सके" निष्पादित किया जाएगा, अतुल्यकालिक रूप से।
ओरोल

1
यह अभी भी टूट सकता है, क्योंकि यदि उपयोगकर्ता 2 जी कनेक्शन पर है तो क्रोम जानबूझकर document.writeकॉल डालने से मना कर देगा <script>डेवलपर्स
Googleweb

42

यह आपके पेज को ब्लॉक कर सकता है

document.writeपृष्ठ लोड होने के दौरान केवल काम करता है; यदि आप इसे पृष्ठ लोड होने के बाद कहते हैं, तो यह पूरे पृष्ठ को अधिलेखित कर देगा।

इसका प्रभावी रूप से मतलब है कि आपको इसे इनलाइन स्क्रिप्ट ब्लॉक से कॉल करना होगा - और यह ब्राउज़र को उस पेज के प्रसंस्करण भागों से रोकता है जो पालन करते हैं। राइटिंग और इमेजेज तब तक डाउनलोड नहीं किए जाएंगे जब तक राइटिंग ब्लॉक खत्म नहीं हो जाता।


31

समर्थक:

  • बाहरी (आपके होस्ट / डोमेन) स्क्रिप्ट से इनलाइन सामग्री एम्बेड करने का यह सबसे आसान तरीका है।
  • आप एक फ्रेम / iframe में संपूर्ण सामग्री को अधिलेखित कर सकते हैं। अधिक आधुनिक अजाक्स तकनीक व्यापक रूप से उपलब्ध होने (1998-2002) से पहले मैंने मेनू / नेविगेशन टुकड़ों के लिए इस तकनीक का बहुत उपयोग किया।

कोन:

  • यह रेंडरिंग इंजन को तब तक थामने के लिए अनुक्रमित करता है जब तक कि बाहरी स्क्रिप्ट लोड न हो जाए, जो एक आंतरिक स्क्रिप्ट की तुलना में अधिक समय ले सकता है।
  • यह आमतौर पर इस तरह से उपयोग किया जाता है कि स्क्रिप्ट सामग्री के भीतर रखी जाती है, जिसे बुरा रूप माना जाता है।

3
उससे ज्यादा विपक्ष हैं। उदाहरण के लिए, गूगल क्रोम को चलाने के लिए मना कर देगा document.writeकि बनाता है <script>कुछ निश्चित परिस्थितियों में टैग। Developers.google.com/web/updates/2016/08/…
Flim

@ यह ध्यान देने योग्य है, आपकी टिप्पणी मेरे जवाब के बाद 8 साल से अधिक है और यह लगभग 3 साल बाद है। हाँ, अन्य विपक्ष है ... और मुझे आश्चर्य होगा कि अगर document.write खुद ही दूर नहीं जाता है ... साथ ही संभवतः कुछ अन्य अत्यधिक दुर्व्यवहार करने वाले इंटरफेस भी।
ट्रैकर 1

10

यहां मेरा ट्वोपेंस मूल्य है, सामान्य तौर पर आपको document.writeभारी उठाने के लिए उपयोग नहीं करना चाहिए , लेकिन एक उदाहरण है जहां यह निश्चित रूप से उपयोगी है:

http://www.quirksmode.org/blog/archives/2005/06/three_javascrip_1.html

मैंने हाल ही में AJAX स्लाइडर गैलरी बनाने की कोशिश की है। मैंने दो नेस्टेड डिविज़ बनाए और जेएस के साथ width/ heightऔर overflow: hiddenबाहरी को लागू किया <div>। यह इतना था कि इस घटना में कि ब्राउज़र जेएस अक्षम था, div गैलरी में छवियों को समायोजित करने के लिए तैरती थी - कुछ अच्छा सुंदर गिरावट।

बात यह है कि ऊपर दिए गए लेख के अनुसार, सीएसएस के इस जेएस अपहरण ने तब तक किक नहीं किया जब तक कि पेज लोड नहीं हुआ, जिससे एक क्षणिक चमक पैदा हुई, क्योंकि डिव को लोड किया गया था। इसलिए पेज लोड होने के साथ मुझे एक सीएसएस नियम लिखने या एक शीट शामिल करने की आवश्यकता थी।

जाहिर है, यह एक्सएचटीएमएल में काम नहीं करेगा, लेकिन चूंकि एक्सएचटीएमएल एक मृत बतख (और IE में टैग सूप के रूप में प्रस्तुत करता है) में से कुछ प्रतीत होता है, यह DOCTYPE की आपकी पसंद का पुन: मूल्यांकन करने के लायक हो सकता है ...


7

यह पृष्ठ पर सामग्री को अधिलेखित करता है जो सबसे स्पष्ट कारण है लेकिन मैं इसे "बुरा" नहीं कहूंगा।

जब तक आप JavaScript का उपयोग करके एक संपूर्ण दस्तावेज़ नहीं बना रहे हैं, तब तक इसका बहुत उपयोग नहीं होता है, जिस स्थिति में आप दस्तावेज़ के साथ शुरू कर सकते हैं।

फिर भी, आप वास्तव में DOM का लाभ नहीं उठा रहे हैं जब आप document.write का उपयोग करते हैं - आप दस्तावेज़ में पाठ का एक बूँद डंप कर रहे हैं तो मैं कहूँगा कि यह खराब रूप है।


2
एक स्पष्टीकरण: document.write सम्मिलित करता है पृष्ठ पर, यह उन्हें अधिलेखित नहीं करता है।
बजे पीटर डॉल्बर्ग

5
@Peter, यह डॉक्यूमेंट लोड होने के बाद इसे कॉल करने पर कंटेंट को ओवरराइट कर देता है। मैं अनुमान लगा रहा हूँ कि इसका क्या मतलब है।
मैथ्यू Crumley

2
क्या आप यह सुझाव दे रहे हैं कि किसी व्यक्ति को केवल कुछ करने की बजाय कोड में मैन्युअल रूप से अलग-अलग DOM नोड्स बनाने चाहिए div.innerHTML = "<label for='MySelect'>Choose One</label><select id='MySelect'><option value='foo' selected=''>foo</option><option value='bar'>bar</option></select>";? ऐसा लगता है कि यह अनावश्यक और कम पठनीय कोड का उत्पादन करेगा। यह दृष्टिकोण जॉन रेसिग और अन्य जेएस डेवलपर्स अधिवक्ता के बिल्कुल विपरीत है।
लेजे मेजेस्टे

7

यह XML रेंडरिंग (जैसे एक्सएचटीएमएल पेज) का उपयोग कर पेजों को तोड़ता है।

सर्वश्रेष्ठ : कुछ ब्राउज़र HTML रेंडरिंग पर वापस जाते हैं और सब कुछ ठीक काम करता है।

संभावित : कुछ ब्राउज़र XML रेंडरिंग मोड में document.write () फ़ंक्शन को अक्षम करते हैं।

सबसे खराब : जब भी डॉक्यूमेंट को राइट किया जाता है तो कुछ ब्राउजर एक XML एरर को आग लगा देते हैं।


6

मेरे सर के ऊपर से चला गया:

  1. document.writeपेज लोड या बॉडी लोड में उपयोग करने की आवश्यकता है। इसलिए यदि आप अपने पेज कंटेंट डॉक्यूमेंट को अपडेट करने के लिए किसी अन्य समय में स्क्रिप्ट का उपयोग करना चाहते हैं। राइट बहुत ज्यादा बेकार है।

  2. तकनीकी रूप document.writeसे केवल HTML पेज अपडेट होंगे न कि XHTML / XML। IE इस तथ्य के बहुत माफ करने लगता है लेकिन अन्य ब्राउज़र नहीं होंगे।

http://www.w3.org/MarkUp/2004/xhtml-faq#docwrite


9
IE क्षमा कर रहा है क्योंकि यह XHTML का समर्थन नहीं करता है। यदि / जब वे करते हैं, तो document.write शायद काम करना बंद कर देगा (केवल XHTML पाठ्यक्रम में)।
मैथ्यू Crumley

2
XHTML वेब पर अप्रासंगिक है। एक सख्त एक्सएचटीएमएल doctype के साथ भी पृष्ठों वास्तव में इस संबंध में एक्सएमएल के रूप में व्यवहार नहीं कर रहे हैं, ब्राउज़र डेवलपर्स विश्वास पेज लेखक नहीं है कि ज्यादा।
RobG

4

Chrome document.writeकुछ मामलों में स्क्रिप्ट सम्मिलित करने वाले ब्लॉक कर सकता है । जब ऐसा होता है, तो यह कंसोल में यह चेतावनी प्रदर्शित करेगा:

एक पार्सर-अवरोधक, क्रॉस-ऑरिजिन स्क्रिप्ट, ..., document.write के माध्यम से मंगाई गई है। यदि डिवाइस में नेटवर्क खराब है, तो इसे ब्राउज़र द्वारा ब्लॉक किया जा सकता है।

संदर्भ:


3

ब्राउज़र उल्लंघन

.writeइसे ब्राउज़र उल्लंघन माना जाता है क्योंकि यह पृष्ठ को रेंडर करने से पार्सर को रोक देता है। पार्सर संदेश प्राप्त करता है कि दस्तावेज़ को संशोधित किया जा रहा है; इसलिए, यह अवरुद्ध हो जाता है जब तक कि JS ने अपनी प्रक्रिया पूरी नहीं कर ली। केवल इस समय पार्सर फिर से शुरू होगा।

प्रदर्शन

ऐसी विधि को नियोजित करने का सबसे बड़ा परिणाम प्रदर्शन कम है। ब्राउज़र को पृष्ठ सामग्री लोड करने में अधिक समय लगेगा। लोड समय पर प्रतिकूल प्रतिक्रिया इस बात पर निर्भर करती है कि दस्तावेज़ को क्या लिखा जा रहा है। यदि आप एक जोड़ रहे हैं तो आपको बहुत अधिक अंतर नहीं दिखेगा<p> DOM से 50% की एक सरणी को पारित करने के विरोध में DOM में टैग - कुछ जो कि जावास्क्रिप्ट लाइब्रेरीज़ के लिए हैं (कुछ जो मैंने वर्किंग कोड में देखे हैं और परिणामस्वरूप 11 सेकंड की देरी हुई है - बेशक, यह आपके हार्डवेयर पर भी निर्भर करता है)।

सब सब में, यह सबसे अच्छा है अगर आप इसे मदद कर सकते हैं तो इस विधि को स्पष्ट करें।

अधिक जानकारी के लिए document.write () के खिलाफ हस्तक्षेप करना देखें


3

Google-Chrome देव उपकरण ' लाइटहाउस ऑडिट ' द्वारा किए गए विश्लेषण के आधार पर ,

धीमे कनेक्शन पर उपयोगकर्ताओं के लिए, बाहरी स्क्रिप्ट्स को गतिशील रूप से इंजेक्शन के माध्यम document.write()से सेकंड के दसियों पेज लोड में देरी हो सकती है।

यहां छवि विवरण दर्ज करें


2
  • एक साधारण कारण क्यों document.write बुरा व्यवहार है है कि आप एक ऐसे परिदृश्य के साथ नहीं आ सकते हैं जहाँ आपको एक बेहतर विकल्प नहीं मिल सकता है।
  • एक और कारण यह है कि आप वस्तुओं के बजाय तार के साथ काम कर रहे हैं (यह बहुत ही आदिम है)।
  • यह केवल दस्तावेजों को संलग्न करता है।
  • उदाहरण के लिए MVC (मॉडल-व्यू-कंट्रोलर) पैटर्न की सुंदरता के लिए इसके पास कुछ भी नहीं है ।
  • यह अजाक्स + jQuery या कोणीयजेएस के साथ गतिशील सामग्री पेश करने के लिए बहुत अधिक शक्तिशाली है ।

के रूप में अपनी पहली गोली के रूप में चला जाता है, आप कैसे हल करने जा रहे हैं @sunwukung ऊपर अपने जवाब में वर्णन करता है? मैं मानता हूं कि आप इसे DOM मैनिपुलेशन के साथ हल कर सकते हैं , लेकिन जैसे-जैसे DOM मैनिपुलेशन चलते हैं, वैसे-वैसे कई बार FUOC से बचना मुश्किल होता है document.write
बर्ट ब्रुइनोगे

क्या अब एफओओसी एक समस्या है?
एंडर्स लिंडेन

1

स्रोत कोड स्ट्रिंग के मूल्यांकन के रूप में डॉक्यूमेंट.राइट () (और .innerHTML) के बारे में कोई सोच सकता है। यह कई अनुप्रयोगों के लिए बहुत उपयोगी हो सकता है। उदाहरण के लिए यदि आपको किसी स्रोत से स्ट्रिंग के रूप में HTML कोड मिलता है, तो इसे "मूल्यांकन" करना आसान है।

लिस्प के संदर्भ में, डोम हेरफेर एक सूची संरचना में हेरफेर करने जैसा होगा, जैसे कि सूची (नारंगी) बनाकर करें:

(cons 'orange '())

और document.write () एक स्ट्रिंग का मूल्यांकन करने जैसा होगा, जैसे एक स्रोत कोड स्ट्रिंग का मूल्यांकन करके एक सूची बनाएं:

(eval-string "(cons 'orange '())")

लिस्प में लिस्ट मैनिपुलेशन का उपयोग करके कोड बनाने की बहुत उपयोगी क्षमता भी है (जैसे जेएस पार्स ट्री बनाने के लिए "डोम स्टाइल" का उपयोग करना)। इसका मतलब है कि आप "स्ट्रिंग शैली" के बजाय "DOM शैली" का उपयोग करके एक सूची संरचना का निर्माण कर सकते हैं, और फिर उस कोड को चला सकते हैं, जैसे कि इसके लिए:

(eval '(cons 'orange '()))

यदि आप सरल लाइव संपादकों की तरह कोडिंग टूल को लागू करते हैं, तो डॉक्यूमेंट को लिखने की क्षमता है, उदाहरण के लिए document.write () या .innerHTML का उपयोग करना। लिस्प इस मायने में आदर्श है, लेकिन आप जेएस में बहुत अच्छा सामान भी कर सकते हैं, और कई लोग ऐसा कर रहे हैं, जैसे कि http://jsn.com/


1

डॉक्यूमेंट का नुकसान। मुख्य रूप से इन 3 कारकों पर निर्भर करता है:

क) कार्यान्वयन

डॉक्यूमेंट.राइट () का इस्तेमाल ज्यादातर स्क्रीन पर कंटेंट लिखने के लिए किया जाता है जैसे ही उस कंटेंट की जरूरत होती है। इसका मतलब यह है कि यह कहीं भी होता है, या तो जावास्क्रिप्ट फ़ाइल में या HTML फ़ाइल में स्क्रिप्ट टैग के अंदर। स्क्रिप्ट टैग के साथ ऐसी HTML फ़ाइल के भीतर कहीं भी रखा जा रहा है, यह एक बुरा विचार है। यह स्क्रिप्ट ब्लॉक के अंदर document.write () स्टेटमेंट है जो एक वेब पेज के अंदर HTML के साथ intertwined हैं।

b) प्रतिपादन

सामान्य रूप से डिज़ाइन किया गया कोड किसी भी गतिशील रूप से उत्पन्न सामग्री को ले जाएगा, इसे मेमोरी में स्टोर करें, इसे हेरफेर करते रहें क्योंकि यह कोड से गुजरता है इससे पहले कि यह स्क्रीन पर बाहर थूकता है। तो पूर्ववर्ती खंड में अंतिम बिंदु को दोहराने के लिए, अंतर्वस्तु को रेंडर करना अन्य सामग्री की तुलना में तेजी से प्रस्तुत करना हो सकता है, जिस पर भरोसा किया जा सकता है, लेकिन यह अन्य कोड के लिए उपलब्ध नहीं हो सकता है कि बदले में प्रसंस्करण के लिए सामग्री प्रदान करने की आवश्यकता होती है। इस दुविधा को हल करने के लिए हमें डॉक्यूमेंट से छुटकारा पाना होगा () और इसे सही तरीके से लागू करना होगा।

ग) असंभव हेरफेर

एक बार जब यह लिखा जाता है तो यह हो जाता है और खत्म हो जाता है। हम डोम में दोहन के बिना इसे हेरफेर करने के लिए वापस नहीं जा सकते।


1

मुझे नहीं लगता कि document.write का उपयोग करना एक बुरा व्यवहार है। सरल शब्दों में यह अनुभवहीन लोगों के लिए एक उच्च वोल्टेज की तरह है। यदि आप इसे गलत तरीके से उपयोग करते हैं, तो आप पकाते हैं। कई डेवलपर्स हैं जिन्होंने कम से कम एक बार इस और अन्य खतरनाक तरीकों का इस्तेमाल किया है, और वे वास्तव में कभी भी अपनी असफलताओं में नहीं खोदते हैं। इसके बजाय, जब कुछ गलत होता है, तो वे जमानत देते हैं, और कुछ सुरक्षित उपयोग करते हैं। वे हैं जो इस तरह के बयान देते हैं जिन्हें "बुरा अभ्यास" माना जाता है।

यह एक हार्ड ड्राइव को फ़ॉर्मेट करने जैसा है, जब आपको केवल कुछ फ़ाइलों को हटाने की आवश्यकता होती है और फिर "फ़ॉर्मेटिंग ड्राइव एक बुरा अभ्यास" होता है।


-3

मुझे लगता है कि सबसे बड़ी समस्या यह है कि दस्तावेज़ के माध्यम से लिखे गए किसी भी तत्व को पृष्ठ के तत्वों के अंत में जोड़ा जाता है। यह शायद ही कभी आधुनिक पेज लेआउट और AJAX के साथ वांछित प्रभाव है। (आपको यह ध्यान रखना होगा कि DOM में तत्व सामयिक हैं, और जब स्क्रिप्ट चलती है तो इसका व्यवहार प्रभावित हो सकता है)।

पृष्ठ पर प्लेसहोल्डर तत्व सेट करना बेहतर है, और फिर इसे आंतरिक HTML में हेरफेर करना है।


15
यह सच नहीं है। document.write पृष्ठ के अंत में सामग्री को जोड़ नहीं करता है जैसे कि यह एक परिशिष्ट है। वे जगह-जगह लिखे गए हैं।
पीटर बेली

1
@ पैटर बेली, मुझे पता है कि यह एक पुराना धागा है, लेकिन वास्तव में इसे कम नहीं किया जाना चाहिए। चाहे यह संलग्न हो या न हो, यह इस बात पर निर्भर करता है कि दस्तावेज़ लोड हो रहा है या नहीं () पृष्ठ लोड होने के दौरान इनलाइन चलता है। यदि पृष्ठ लोड होने के बाद इसे किसी फ़ंक्शन से कॉल किया जाता है तो पहले डॉक्यूमेंट.राइट () पूरे शरीर को बदल देगा और बाद में कॉल इसमें संलग्न होंगे।
ऑक्टोपस

3
@ ओक्टोपस हाँ, लेकिन यह परिस्थितिजन्य है। यह उस परिदृश्य में ही लागू होता है क्योंकि वहाँ एक ताज़ा दस्तावेज़ होता है। यह अभी भी कहना सही नहीं है कि "document.write () संलग्न है।" हां, यह एक पुराना जवाब है और एक पुरानी गिरावट है, लेकिन मैं अभी भी इसके द्वारा खड़ा हूं।
पीटर बैली

यह ठीक है। मैंने अभद्रता से बात की। मैंने इसे बहुत पहले ही संपादित कर लिया था, लेकिन ऊपर बहुत बेहतर उत्तर है। मैं इंगित करता हूँ कि "जगह में लिखा" समान रूप से अभेद्य है।
BnWasteland
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.