2008-09-26 13 views
17

किसी को भी कैसे एचटीएमएल पाने के लिए एक IFRAME से बाहर मैं कई अलग अलग तरीकों की कोशिश की है पता है:जावास्क्रिप्ट Iframe innerHTML

document.getElementById('iframe01').contentDocument.body.innerHTML 
document.frames['iframe01'].document.body.innerHTML 
document.getElementById('iframe01').contentWindow.document.body.innerHTML 

आदि

+1

किसी और को जो एक गूगल खोज से यहां भूमि के लिए, Firefox में कम से कम शायद भी 'theiFrameObject.contentDocument.body.innerHTML' प्रयास करें। –

+1

@ मैटब्लैलीन का समाधान काम करता है, लेकिन iframe src को मुख्य विंडो के समान डोमेन पर होना आवश्यक है। अन्यथा, iframe को अपनी माता-पिता को 'parent.ifw = window' लोड पर पैरेंट को पास करना होगा और फिर माता-पिता' window.ifw.document' –

उत्तर

8

आप JQuery पर एक नज़र डालें, तो आप की तरह कुछ कर सकते हैं :

<iframe id="my_iframe" ...></iframe> 

$('#my_iframe').contents().find('html').html(); 

यह मानते हुए किया जाता है कि अपने iframe माता पिता और बच्चे जावास्क्रिप्ट में Same Origin Policy की वजह से एक ही सर्वर पर रहते हैं,।

+2

का उपयोग कर सकते हैं आप HTML तत्व के आंतरिक HTML को पकड़ रहे हैं, न कि शरीर, और यह करने के लिए यह एक सुंदर पीछे की विधि है। जब आप चाहते हैं कि पुनः प्राप्त करने के लिए मूल DOM गुण हैं (उदा।।) आपको किसी खोज कॉल के ओवरहेड से बचना चाहिए। – Prestaul

+0

+1 यह सभी प्रमुख ब्राउज़रों में काम करता है – ravi404

+13

कृपया एक jQuery के रूप में उत्तर दें बंद करें! –

13

मुझे लगता है कि यह तुम क्या चाहते है:

window.frames['iframe01'].document.body.innerHTML 

संपादित करें:

मैं इसे अच्छा अधिकार पर है कि इस क्रोम और फ़ायरफ़ॉक्स में काम नहीं करेगा, हालांकि यह IE में पूरी तरह से काम करता है, जहां मैंने इसका परीक्षण किया। पीछे मुड़कर देखें तो यह है कि एक बड़ी गलती

था यह काम करेगा:

window.frames[0].document.body.innerHTML 

मैं समझता हूँ कि यह नहीं वास्तव में क्या कहा गया था लेकिन इस सवाल का जवाब नष्ट करने के लिए नहीं करना चाहती है, क्योंकि मुझे लगता है कि यह एक जगह नहीं है ।

मैं @ नीचे ravz के jQuery जवाब पसंद है।

+1

और यदि आप अधिक स्पष्ट होना चाहते हैं तो आप कह सकते हैं: window.frames ['iframe01']। Document.body.innerHTML – Prestaul

+0

मैं सहमत हूं। धन्यवाद – wcm

+2

यह क्रोम पर काम नहीं करता है। :( – Kane

3

भूल जाते हैं कि आप सुरक्षा की वजह से दूसरे डोमेन पर नहीं कर सकता है।

तो अगर यह मामला है, तो आप JSON उपयोग करना चाहिए।

10

निम्नलिखित काम करेगा की तरह कुछ करने के बाद।

<iframe id = "testframe" onload = populateIframe(this.id);></iframe> 

// The following function should be inside a script tag 

function populateIframe(id) { 

    var text = "This is a Test" 
var iframe = document.getElementById(id); 

var doc; 

if(iframe.contentDocument) { 
    doc = iframe.contentDocument; 
} else { 
    doc = iframe.contentWindow.document; 
} 

doc.body.innerHTML = text; 

    } 
+0

शानदार !!! आप हैं सबसे अच्छा! –

2

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

function gethtml() 
{ 
var x=document.getElementById("myframe"); 
var y=(x.contentWindow || x.contentDocument); 
if (y.document)y=y.document; 
alert(y.body.innerHTML); 
} 

यहां, मेरा फ्रेम आपके आईफ्रेम की आईडी है। नोट: आप किसी डोमेन से बाहर एक स्रोत से iframe से सामग्री निकालने नहीं कर सकते हैं।

6

कोनोरी के जवाब सही था। मामले में आप शरीर टैग से केवल सामान की जरूरत है, बस का उपयोग करें:

$('#my_iframe').contents().find('body').html(); 
+0

बेस्ट उत्तर! धन्यवाद! भूलें:

1

यदि आप Firefox पर ForceCORS फिल्टर स्थापित अन्य डोमेन से स्रोत मिल सकता है। जब आप इस फ़िल्टर को चालू करते हैं, तो यह ब्राउज़र में सुरक्षा सुविधा को बाईपास कर देगा और आपकी स्क्रिप्ट तब भी काम करेगी जब आप किसी अन्य वेबपृष्ठ को पढ़ने का प्रयास करते हैं। उदाहरण के लिए, आप एक आईफ्रेम में FoxNews.com खोल सकते हैं और फिर इसके स्रोत को पढ़ सकते हैं। कारण आधुनिक वेब ब्रूवर डिफ़ॉल्ट रूप से इस क्षमता को अस्वीकार करते हैं क्योंकि यदि अन्य डोमेन में जावास्क्रिप्ट का एक टुकड़ा शामिल है और आप इसे पढ़ रहे हैं और इसे अपने पृष्ठ पर प्रदर्शित कर रहे हैं, तो इसमें दुर्भावनापूर्ण कोड हो सकता है और सुरक्षा खतरे हो सकता है। तो, जब भी आप अपने पृष्ठ पर अन्य डोमेन से डेटा प्रदर्शित कर रहे हैं, तो आप इस वास्तविक खतरा सावधान रहना और अपने पाठ से सभी जावा स्क्रिप्ट कोड को फ़िल्टर कर देती तो आप इसे प्रदर्शित करने के लिए जा रहे हैं एक तरह से लागू करना चाहिए।याद रखें, जब कच्चे पाठ के एक अनुमानित टुकड़े में स्क्रिप्ट टैग के भीतर संलग्न कुछ कोड होता है, तो जब आप इसे अपने पृष्ठ पर प्रदर्शित करते हैं तो वे दिखाई नहीं देंगे, फिर भी वे भाग लेंगे! तो, यह एहसास है कि यह एक खतरा है।

http://www-jo.se/f.pfleger/forcecors