23

में HTML सामग्री स्थापित करने के लिए कैसे मैं एक HTML स्ट्रिंगएक iframe

<html> 
    <body>Hello world</body> 
</html> 

है और मैं जावास्क्रिप्ट के साथ एक iframe के लिए सेट करना चाहते हैं। मैं इस तरह एचटीएमएल स्थापित करने के लिए कोशिश कर रहा हूँ:

contentWindow.document.body.innerHTML 

या

contentDocument.body.innerHTML 

या

document.body.innerHTML 

लेकिन आईई देता है "प्रवेश निषेध है।" या "ऑब्जेक्ट इस संपत्ति या विधि का समर्थन नहीं करता है।" या "कार्रवाई के लिए अवैध अंतिम तत्व।" त्रुटियों।

<!DOCTYPE html> 
<html> 
    <head> 
    <script type="text/javascript" src="jquery_1.7.0.min.js"/> 
    <script type="text/javascript"> 
     $(document).ready(function(){ 
     var htmlString = "<html><body>Hello world</body></html>"; 
     var myIFrame = document.getElementById('iframe1'); 
     // open needed line commentary 
     //myIFrame.contentWindow.document.body.innerHTML = htmlString; 
     //myIFrame.contentDocument.body.innerHTML = htmlString; 
     //myIFrame.document.body.innerHTML = htmlString; 
     //myIFrame.contentWindow.document.documentElement.innerHTML = htmlString; 
     }); 
    </script> 
    </head> 
    <body> 
    <p>This is iframe: 
     <br> 
     <iframe id="iframe1"> 
     <p>Your browser does not support iframes.</p> 
     </iframe> 
    </body> 
</html> 
+0

क्यों आप एक पृष्ठ लोड नहीं करते हैं जो यह बहुत अच्छी तरह से काम करता है? आप लोड करने के लिए एक स्ट्रिंग का उपयोग क्यों करना चाहते हैं? मुझे बताएं –

उत्तर

38

आप इस्तेमाल कर सकते हैं:

document.getElementById('iframe1').contentWindow.document.write("<html><body>Hello world</body></html>"); 

यहाँ एक jsFiddle है, जो सभी प्रमुख ब्राउज़रों में काम करता है।

ध्यान दें कि contentDocument.write के बजाय आपको contentWindow.document.write का उपयोग करना चाहिए: इससे यह आईई 7 में भी काम करता है।

+0

को स्वीकार कर लिया है @ user1846192 –

+0

नोट संपादित करने के लिए धन्यवाद, अगर आप पढ़ रहे हैं और iframe लिख रहे हैं, तो आपको इसकी आवश्यकता होगी document.getElementById ('iframe1') लिखने contentWindow.document.write ("");। इस वर iframe_html = document.getElementById ('iframe_exe_uploader') की तरह पढ़ने रिक्त स्ट्रिंग के लिए contentWindow.document.body। .innerHTML; –

+1

मुझे क्रोम में काम करने के लिए इसे खोलने/बंद करने की आवश्यकता है: iframe.contentWindow.document.open ('text/htmlreplace'); iframe.contentWindow.document.write (सामग्री) ; iframe.contentWindow.document.close(); – Henry

0

कैसे के बारे में document.documentElement.innerHTML:

यहाँ मेरा पूरा कोड है। लेकिन पता है कि पृष्ठ में सबकुछ भी उस स्क्रिप्ट को प्रतिस्थापित किया जाएगा जो ऐसा करता है।

एक iframe यह की तरह इस myIFrame.contentWindow.document.documentElement.innerHTML

+0

आपके उत्तर के लिए धन्यवाद, लेकिन अगर मैं इस कोड का उपयोग करता हूं यानी यह त्रुटि कहें: "कार्रवाई के लिए अमान्य अंतिम तत्व।" –

5

innerHTML होगा के लिए आपको थोड़ी सूझबूझ से विशेष रूप से आईई, जहां thead जैसे तत्वों केवल पढ़ने के लिए और परेशानी का एक बहुत का कारण बन रहे हैं में है।

msdn पर प्रलेखन के आधार पर आप documentMode को आजमा सकते हैं जो innerHTML संपत्ति प्रदान करता है।

myIFrame = myIFrame.contentWindow || 
    myIFrame.contentDocument.document || 
    myIFrame.contentDocument; 
myIFrame.document.open(); 
myIFrame.document.write('Your HTML Code'); 
myIFrame.document.close(); 

यह केवल आईई में काम कर सकता है।

+0

इस नए समाधान को आजमाएं, मैंने कुछ और चेक – MatthiasLaug

+0

संपादित करने के लिए धन्यवाद, लेकिन मैंने पहले से ही @ user1846192 के उत्तर –

-2

यह प्रयास करें:

$('iframe').load(function() { 
    $(this).contents().find('body').append("Hello world"); 
}); 

अद्यतन:

$(function(){ 
    $('iframe').load(function() { 
     $(this).contents().find('body').append("Hello world"); 
    }); 
}) 
+1

यह काम नहीं कर रहा है –

15
var htmlString="<body>Hello world</body>"; 
var myIFrame = document.getElementById('iframe1'); 
myIFrame.src="javascript:'"+htmlString+"'"; 

एचटीएमएल 5 के साथ आप srcdoc attribute उपयोग करने में सक्षम हो जाएगा।

+1

@ mr.boyfox ठीक है, मैं HTML स्ट्रिंग के चारों ओर उद्धरण भूल गया था। यह आईई 7 और आईई 8 में काम करना चाहिए। – Christophe

+0

हाँ !, अब सही तरीके से काम करता है, धन्यवाद @ क्रिस्टोफ़े! –