2010-02-12 7 views
21

से iframe नाम का उपयोग करें हालांकि मैं यह काफी आसान होगा लेकिन मुझे जवाब नहीं मिल रहा है। मुझे यह जानने की ज़रूरत है कि मैं iframe के नाम से iframe के नाम तक कैसे पहुंच सकता हूं। मैं ऐसा कुछ करने की कोशिश कर रहा था लेकिन यह काम नहीं कर रहा है।अंदर iframe

<iframe name="thename"> 
    <script type="text/javascript"> 
    alert(parent.name); 
    </script> 
</iframe> 

उत्तर

47

आप लगभग सही थे। frame या iframe पर name विशेषता सेट करना उस स्ट्रिंग पर फ्रेम के वैश्विक window ऑब्जेक्ट की name संपत्ति सेट करता है। (नहीं parent, जो दस्तावेज है कि फ्रेम का मालिक की खिड़की को दर्शाता है।)

तो जब तक कुछ अन्य स्क्रिप्ट जानबूझ कर नाम बदल दिया गया है, यह के रूप में सरल है:

1.html: 
<iframe name="tim" href="2.html"></iframe> 

2.html: 
<script type="text/javascript"> 
    alert(window.name); // tim 
</script> 
+4

आईफ्रेम के गुणों तक पहुंचने के बारे में कैसे? उदाहरण के लिए यदि इसमें कुछ डेटा-सेट एटीआर है? – AlexStack

+8

@AlexStack: 'window.frameElement' आपको मूल दस्तावेज़ से तत्व प्राप्त करता है जो स्वयं को संदर्भित करता है, फिर आप उस पर 'getAttribute' प्राप्त कर सकते हैं (मान लें कि आपके पास एसओपी एक्सेस है)। Http: // stackoverflow देखें।कॉम/प्रश्न/40 9 7870/jquery-access-iframe-id-from-iframe-content/4098384 # 4098384 फ़ॉलबैक के लिए जहां उपलब्ध नहीं है – bobince

0

कुछ इस तरह काम करना चाहिए:

parent.document.getElementById('idhere').name; 

आप माता-पिता का उपयोग करने के लिए और फिर तत्व या तो byId, नाम, आदि प्राप्त है ... तो नाम संपत्ति का उपयोग।

<iframe name="thename"> 
<script type="text/javascript"> 
    var iframeName = parent.document.getElementById('idhere').name; 
</script> 
</iframe> 
+2

के साथ इस हैश प्राप्त कर सकते हैं iframe के स्रोत URL में हैश निर्धारित करने की आवश्यकता क्या होगा अगर तुम नहीं जानते आईडी या आईफ्रेम एक अलग डोमेन पर बैठता है? –

+0

आपको getElementsByTagName का उपयोग करना होगा और कुछ मानदंडों के परिणामों पर पुन: प्रयास करना होगा। –

0

ठीक है, एक IFRAME तत्व कुछ भी नहीं होने चाहिए, यह किसी अन्य दस्तावेज़ को लक्षित कर रहा है:

तो अपने कोड की तरह होना चाहिए। इसलिए IFRAME के ​​अंदर एक एससीआरआईपीटी टैग का उपयोग करने से बहुत कुछ समझ नहीं आता है। इसके बजाय, कॉल किए गए दस्तावेज़ के अंदर एससीआरआईपीटी का उपयोग करें, उदा।

iframe_caller.html:

<html> 
<body> 
    <iframe id="theIframe" name="theIframe" src="iframe_doc.html"></iframe> 
</body> 
</html> 

iframe_doc.html:

<html> 
<body> 
    <script type="text/javascript"> 
    var iframes= parent.document.getElementsByTagName("iframe"); 
    document.write(iframes[0].getAttribute("id")); 
    </script> 
</body> 
</html> 

नोट मैं parent.document.function() वहाँ उपयोग कर रहा हूँ।

43

का एक संयोजन है जवाब मैं पसंद करते हैं:

// window.frameElement Gets IFrame element which document inside 
window.frameElement.getAttribute("Name"); 

यह कुछ मामलों window.frameElement में पर IE7 +, मोज़िला & क्रोम

+2

मुझे यह उत्तर स्वीकृत उत्तर से अधिक पसंद है क्योंकि यह वास्तविक iframe तत्व का संदर्भ देता है। – keyneom

+0

यह http://publisherconsole.appspot.com/safeframe/creative-preview.html पर कोई काम नहीं करता है, कोई सुझाव? – PayteR

+0

मैंने इसे समझ लिया https://stackoverflow.com/a/46128839/839434 – PayteR

1

काम करता है iframe में null लौटाता है, इसलिए मैंने इसके लिए वर्कअराउंड लगाया।

1. आप

<iframe name="tim" href="2.html#your-hash"></iframe> 

2. iframe में आप

<script type="text/javascript"> 
    var hash = window.location.hash; 
</script>