jquery का उपयोग करके iFrame मूल पृष्ठ तक कैसे पहुँचें?


267

मेरे पास एक iframe है और मूल कोड तक पहुँचने के लिए मैंने निम्नलिखित कोड लागू किया है:

window.parent.document.getElementById('parentPrice').innerHTML

Jquery का उपयोग करके समान परिणाम कैसे प्राप्त करें?
अद्यतन : या jquery का उपयोग करके iFrame मूल पृष्ठ तक कैसे पहुँचें?


जवाबों:


489

IFrame उपयोग के जनक में खोजने के लिए:

$('#parentPrice', window.parent.document).html();

$ () आवरण के लिए दूसरा पैरामीटर वह संदर्भ है जिसमें खोज करना है। यह दस्तावेज़ में चूक करता है।


18
कूल - धन्यवाद से पहले उसने धन्यवाद दिया। StackOverflow timezones के साथ समस्या हो सकती है?
बेलुगोबोब

21
आप यह भी कर सकते हैं: $ (window.parent.document) .find ("# parentPrice")। Html ();
झोरबैक

@belugabob यह एक चक्कर की गलती है।
एरिक एस्कोडोडो

1
उन लोगों के लिए जिन्होंने window.open के साथ एक विंडॉयड लॉन्च किया है, उस पुराने JS मानक window.opener.document के बारे में मत भूलना। $ ("# someDiv", window.opener.document) काम करता है।
jjohn

2
यह केवल तभी काम करेगा जब iframe के स्रोत में jQuery लोड हो। मेरे अनुभव में, iframe स्रोत में jQuery नहीं होगा, लेकिन माता-पिता के jQuery कार्यों में से एक को कॉल करने की आवश्यकता अक्सर होती है। इस उपयोग को करने के लिए: window.document। $ ("# ParentPrice")। Html () यह उत्तर G.lvaro जी। विकारियो पोस्ट किया गया था।
डेविड किंकडेड

39

jquery का उपयोग करके iFrame मूल पृष्ठ तक कैसे पहुँचें

window.parent.document।

jQuery जावास्क्रिप्ट के शीर्ष पर एक पुस्तकालय है, इसके लिए एक पूर्ण प्रतिस्थापन नहीं है। आपको प्रत्येक अंतिम जावास्क्रिप्ट अभिव्यक्ति को $ शामिल करने वाली किसी चीज़ से प्रतिस्थापित करने की आवश्यकता नहीं है।


6
+1। jQuery महान है, लेकिन सरल समस्याओं के बहुत सारे उत्तर 'jQuery का उपयोग करें' प्रतीत होते हैं। यदि आप लाइब्रेरी को वैसे भी लोड कर रहे हैं, तो ठीक है, लेकिन इसे एक कार्य पर लोड न करें। इसके अलावा, लोग JS perf के बारे में चिंतित लगते हैं, फिर बिना API के आसानी से संभव (और संभवतः तेज) चीजें करने के लिए JS के शीर्ष पर API का उपयोग करते हैं।
ग्रांट वैग्नर

1
@Grant हालांकि मैं ब्राउज़रों के अंदर jQuery का मूल कोड बनने का सपना देखता हूं।
डैन ब्लो्स

3
@ बाल्स्की: यह मेरी दुःस्वप्न है! jQuery में बहुत अधिक जटिल और नाजुक "क्या मेरा मतलब है" कोड है जो एक आधिकारिक एपीआई में डालने के लिए पूरी तरह से अनुचित होगा।
बोबिन्स

1
@ बॉब: स्पष्ट रूप से, आपको हमेशा सभी जावास्क्रिप्ट को jQuery से बदलना चाहिए । यह बेकन की तरह है; ऐसी स्थिति नहीं है जिसमें कम बेहतर है। ;)
मेगावाट।

2
ओपी में पहले से ही window.parent.document था, इसलिए यह कुछ भी जवाब नहीं देता था। और चयनकर्ता तर्क की कल्पना करें कि एक तत्व की आईडी की तुलना में बहुत अधिक जटिल है, ऐसी स्थिति जिसमें jQuery का उपयोग करना आसान है। मुझे ऐसा लगता है कि सवाल यह है कि "मैं फ्रेंच में 'हैलो' कैसे कहूं?" और यह उत्तर "जर्मन बोलते हैं"।
अनुदान

13

यदि आपको मूल दस्तावेज में jQuery उदाहरण खोजने की आवश्यकता है (जैसे, प्लग-इन द्वारा प्रदान की गई उपयोगिता फ़ंक्शन को कॉल करने के लिए) इन सिंटैक्स में से एक का उपयोग करें:

  • window.parent.$
  • window.parent.jQuery

उदाहरण:

window.parent.$.modal.close();

jQuery windowवस्तु से जुड़ जाता है और यही वह window.parentहै।


मैं अपने iframe का उपयोग उपयोगकर्ता नियंत्रण की तरह कर रहा हूं। यह मुझे इसे अच्छा और साफ रखने की सुविधा देता है।
डैन रैंडोल्फ

11

आप window.parentइस तरह का उपयोग करके एक iframe के भीतर से मूल विंडो के तत्वों का उपयोग कर सकते हैं :

// using jquery    
window.parent.$("#element_id");

जो निम्नानुसार है:

// pure javascript
window.parent.document.getElementById("element_id");

और यदि आपके पास एक से अधिक नेस्टेड आइफ्रेम्स हैं और आप सबसे ऊपर के आइफ्रेम को एक्सेस करना चाहते हैं, तो आप window.topइस तरह का उपयोग कर सकते हैं :

// using jquery
window.top.$("#element_id");

जो निम्नानुसार है:

// pure javascript
window.top.document.getElementById("element_id");

7

मूल विंडो में रखें:

<script>
function ifDoneChildFrame(val)
{
   $('#parentPrice').html(val);
}
</script>

और iframe src फ़ाइल डाल में:

<script>window.parent.ifDoneChildFrame('Your value here');</script>

5

हाँ, यह मेरे लिए भी काम करता है।

नोट: हमें window.parent.document का उपयोग करने की आवश्यकता है

    $("button", window.parent.document).click(function()
    {
        alert("Functionality defined by def");
    });

5

यह मेरे लिए थोड़ा ट्विस्ट के साथ काम कर रहा है। मेरे मामले में मुझे POPUP JS से PARENT WINDOW फॉर्म में मान जमा करना है।

इसलिए मैंने उपयोग किया है $('#ee_id',window.opener.document).val(eeID);

अति उत्कृष्ट!!!


3

यहाँ खेल में थोड़ी देर हो सकती है, लेकिन मैंने अभी इस शानदार jQuery प्लगइन https://github.com/mkdynamic/jquery-popupwindow की खोज की । यह मूल रूप से एक onUnload कॉलबैक घटना का उपयोग करता है, इसलिए यह मूल रूप से बच्चे की खिड़की के समापन के लिए सुनता है, और उस बिंदु पर किसी भी आवश्यक सामान का प्रदर्शन करेगा। तो वास्तव में माता-पिता को वापस पारित करने के लिए बच्चे की खिड़की में कोई जेएस लिखने की कोई आवश्यकता नहीं है।


1

इन्हें करने के कई तरीके हैं।

I) सीधे मुख्य अभिभावक प्राप्त करें।

exa के लिए। मैं अपने बाल पेज को iframe में बदलना चाहता हूं

var link = '<%=Page.ResolveUrl("~/Home/SubscribeReport")%>';
top.location.replace(link);

यहाँ शीर्ष स्थान पर सीधे माता-पिता मिलते हैं।

II) एक-एक करके माता-पिता प्राप्त करें,

var element = $('.iframe:visible', window.parent.document);

यहां यदि आपके पास अधिक है तो एक iframe, फिर सक्रिय या दृश्यमान निर्दिष्ट करें।

आप भी आगे माता-पिता को पाने के लिए इनकी तरह कर सकते हैं

var masterParent = element.parent().parent().parent()

III) अभिभावक को पहचानकर्ता द्वारा प्राप्त करें।

var myWindow = window.top.$("#Identifier")
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.