2009-06-27 20 views
9

कोई फ़ंक्शन कॉल करके जावास्क्रिप्ट दस्तावेज़ ऑब्जेक्ट बनाने या पुन: बनाने का कोई तरीका है। कुछएक जावास्क्रिप्ट दस्तावेज़ बनाएं ऑब्जेक्ट

<script type="javascript/text"> 
    var document = createDocument("some html"); 
</script> 

जैसे मैं ऐसा करना चाहते हैं तो मैं इस सवाल में इस मुद्दे को हल client side xslt with javascript in firefox

+0

@PaulRoub इस सवाल और संबंधित उत्तरों सितंबर 2011 के दिनांकित हैं, डुप्लिकेट नवंबर 2011 का दूसरा प्रश्न है। डुप्लिकेशंस पर आधारित होना चाहिए प्रकाशन तिथियां, सबसे पुरानी मूल है, कृपया इसे ठीक करें। –

उत्तर

5

आप document.implementation.createDocument का उपयोग कर की कोशिश कर सकते कर सकते हैं। एक बार आपके दस्तावेज़ होने के बाद, आप इसके लिए HTML सेट करने के लिए innerHTML प्रॉपर्टी का उपयोग कर सकते हैं। यदि आप चाहते है कि एक साफ थोड़ा पैकेज में लिपटे यदि आप कुछ इस तरह कर सकते हैं:

function createDocument(html) { 
    var doc = document.implementation.createDocument ('http://www.w3.org/1999/xhtml', 'html', null); 
    doc.documentElement.innerHTML = html; 
    return doc; 
} 

और फिर आप इस तरह समारोह का उपयोग करेंगे:

var doc = createDocument("<body><span>Hello StackOverflow.com!</span></body>"); 

मुझे जानते हैं अगर यह तुम क्या है देख रहे हैं।

1

यह फ़ायरफ़ॉक्स में काम करता है:

document.implementation.createDocument(null, "rootElement", null) 

ध्यान दें कि यह एक XMLDocument, आप देता है बल्कि एक HTMLDocument से (अपने आप दस्तावेज़ की तरह)।

2

आप एक दस्तावेज़ (जैसे एक iframe में के रूप में) आप के साथ ऐसा कर सकते हैं ...

document.open(); 
document.write('<html><head></head><body>some stuff</body></html>'); 
document.close(); 
यहाँ

आप इसे कैसे इस्तेमाल कर सकते हैं की एक डायनामिक रूप से तैयार दस्तावेज बनाना है पुन: करने के लिए देख रहे हैं iframe।

var iframe = document.createElement('iframe'), 
    iframeDoc = (iframe.contentDocument) 
       ? iframe.contentDocument : iframe.contentWindow.document; 

document.getElementById('iframeContainer').appendChild(iframe); 

iframeDoc.open(); 
iframeDoc.write('<html><head></head><body>howdy</body></html>'); 
iframeDoc.close(); 
11

वेबकिट पहले शामिल करने के लिए था/उस कार्य के लिए निम्न विधि का पर्दाफाश:

document.implementation.createHTMLDocument(title); 

फ़ायरफ़ॉक्स, संस्करण 4 से, यह भी इस पद्धति को लागू करता है, जबकि पिछले संस्करणों के लिए यह संभव है एक HTML बनाने के लिए निम्नलिखित का उपयोग कर दस्तावेज़:

var doc = document.implementation.createDocument('', '', 
    document.implementation.createDocumentType('html', '', '')); 

जो मोटे तौर पर होने <!DOCTYPE html> (एचटीएमएल 5) के एक दस्तावेज के बराबर होना चाहिए।

आवश्यक publicId/systemId के साथ 'createDocumentType' के खाली तारों को बदलें।

परिणामस्वरूप दस्तावेज़ में काम करने वाले दस्तावेज़ के लिए एचटीएमएल, सिर और शरीर तत्वों को बनाना/जोड़ना अभी भी आवश्यक होगा।

+0

ठीक है, लेकिन क्या होगा यदि 'दस्तावेज़' अपरिभाषित है? क्या दस्तावेज़ _ex nihilo_ बनाने का कोई तरीका है?निश्चित रूप से एक कन्स्ट्रक्टर समारोह होना चाहिए? – Lori

+1

@ user1269964 फिर 'document.implementation' के बजाय' DOMImplementation' का उपयोग करें। https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation – m93a

+1

** संपादित करें: ** क्षमा करें। 'DOMImplementation' नहीं '' (नया दस्तावेज़())। कार्यान्वयन' – m93a

1

अगर createDocument (...) आप त्रुटियों,) को पार्स createHTMLDocument (उपयोग करने के लिए दान के जवाब अनुकूलन के बजाय देता है:

function createDocument(html, title) { 
    var doc = document.implementation.createHTMLDocument(title) 
    doc.documentElement.innerHTML = html 
    return doc 
} 

उपयोग के रूप में:

var doc = createDocument('<!DOCTYPE html><html>' 
    + '<head><script src="foo.js"></script></head>' 
    + '<body></body></html>', 'test') 
console.log(doc.getElementsByTagName('script')) 

उत्पादन:

[script foo.js] 
संबंधित मुद्दे