2011-10-20 24 views
5

मेरे पास दस्तावेज़ के अंदर एक तत्व है, मैं document.getElementById('iframe_id') द्वारा iframe तत्व प्राप्त कर सकता हूं, लेकिन इस iframe के अंदर तत्व कैसे प्राप्त करें? मैंने iframeElement.contentWindow की कोशिश की, और लौटा DOMWindow कोई गुण नहीं है। iframeElement.docuemnt और iframeElement.contentDocument भी कोशिश की, दोनों अपरिभाषित हैं। मैं इसे कैसे प्राप्त कर सकता हूँ? मैं अपने प्रयोग में नवीनतम क्रोम का उपयोग कर रहा हूँ।जावास्क्रिप्ट में iframe तत्व के अंदर तत्व कैसे प्राप्त करें?

यहाँ iframe तत्व

<iframe id='iframe_id'> 
<html> 
<body>many content here</body> 
</html> 
</iframe> 
+2

क्या आपका पृष्ठ और उसी डोमेन से आईफ़्रेम के अंदर पृष्ठ है? यदि नहीं, तो क्रोम शायद आपको अन्य डोम तक पहुंच नहीं देगा। – Tetaxa

+0

@Tetaxa, iframe के लिए डोमेन कैसे जांचें? यह बहुत संभव है कि वे विभिन्न डोमेन से आते हैं। यूआरएल का पहला भाग – Thomson

+0

। यदि पृष्ठ एक ही सर्वर पर हैं तो आपको ठीक होना चाहिए। – Tetaxa

उत्तर

5

आप केवल एक iframe में सामग्री पूछताछ सकता है जब सामग्री के रूप में ही प्रोटोकॉल, डोमेन और पोर्ट संख्या है इसे उपयोग करने में सक्षम होना चाहिए है लिपि जो पूछताछ करता है। इसे SAME ORIGIN

यदि ऐसा है, तो यह कोड सामग्री दिखाएगा। आप एक सामान्य html पृष्ठ

Demo में एक सामान्य स्क्रिप्ट से iframe उपयोग नहीं कर सकते - - यदि नहीं IE8, क्रोम 13 और Fx6

function showIframeContent(id) { 
    var iframe = document.getElementById(id); 
    try { 
     var doc = (iframe.contentDocument)? iframe.contentDocument: iframe.contentWindow.document; 
     alert(doc.body.innerHTML); 
    } 
    catch(e) { 
     alert(e.message); 
    } 
    return false; 
} 


<iframe id='iframe_id1' src="javascript:parent.somehtml()"> </iframe> 
<br/> 
<a href="#" onclick="return showIframeContent('iframe_id1')">Show</a> 
<hr/> 

<iframe id='iframe_id2' src="http://plungjan.name/"> </iframe> 
<br/> 
<a href="#" onclick="return showIframeContent('iframe_id2')">Show</a> 
<hr/> 
+0

उपर्युक्त नमूना एचटीएमएल क्रोम के नीचे तत्व विंडो से सिर्फ अंश (सरलीकृत) है। यह दिखाता है कि iframe के अंदर एक पूर्ण HTML है। क्या आपका मतलब यूआई में नकली है? – Thomson

+0

हां। वैसे भी यदि पृष्ठ एक ही सर्वर से है, तो मेरा कोड काम करता है। कृपया उसी उत्पत्ति के बारे में अपडेट देखें – mplungjan

+0

अभी भी 'doc' को अनदेखा कर दिया गया है, बहुत अजीब है। – Thomson

0

आप द्वारा document.getElementById('yourIFrame').document.getElementById('yourElement')

4

में परीक्षण करने के बाद:

var iframe = document.getElementById('iframe_id'); 

प्राप्त करने के लिए सामग्री दस्तावेज़ जो आप उपयोग कर सकते हैं:

var contDoc = iframe.contentDocument || iframe.contentWindow.document; 

फिर आप अपने तत्व के अंदरूनी खोज कर सकते हैं आईडी द्वारा iframe ई।

+0

का विचार देना चाहिए मुझे लगता है कि यह काम करना चाहिए। लेकिन मैं आपके 2 कथन चलाने के बाद contDoc अपरिभाषित हो गया। लौटा आईफ्रेम सही लगता है। – Thomson

+1

@ थॉमसन: यह तब तक काम करेगा जब तक कि iframe स्रोत किसी अन्य डोमेन पर सेट न हो। –

+0

मुझे _Uncaught DOMException मिल रहा है: क्रॉस-मूल फ्रेम तक पहुंचने से मूल "http://example.com" के साथ एक फ्रेम को अवरुद्ध कर दिया गया है। कोई संकेत? –

संबंधित मुद्दे