2012-06-08 6 views
11

मेरे पास एक फ़ाइल है, आइए हम इसे parent example.com कहते हैं, डोमेन example.com द्वारा सेवा दी गई है। इस फ़ाइल में jquery शामिल है। एक आईफ्रेम, इसे iframe-win.html पर कॉल करने दें, इस पृष्ठ में एम्बेड किया गया है। iframe-win.html आईडी form-elem और Hello World! के साथ एक फॉर्म तत्व है। अब मैं iframe के अंदर पीछा करता हूँ।आईफ्रेम के अंदर माता-पिता से jquery का उपयोग कैसे करें?

var jQuery = parent.jQuery; 
console.log(jQuery('#form-elem').val()); 

जे एस के अपने सीमित ज्ञान के अनुसार मैं कंसोल पर Hello World! देखना चाहिए, लेकिन इसके बजाय मैं अपरिभाषित देखते हैं। अब, मेरा सवाल है कि मुझे एक आईफ्रेम में फिर से jquery लोड करने की आवश्यकता है या क्या मैं पहले से ही पैरेंट विंडो में लोड की गई jquery ऑब्जेक्ट का उपयोग कर सकता हूं?

ध्यान दें कि यह माता-पिता/iframe से सामान्य पहुंच iframe/मूल सामग्री के रूप में नहीं है।

+0

[iframe से एक्सेस jQuery लाइब्रेरी] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/5481613/access-jquery-library-from-iframe) –

उत्तर

24

iframe में यह कोशिश देखें:

if (typeof(jQuery) == "undefined") { 
    var iframeBody = document.getElementsByTagName("body")[0]; 
    var jQuery = function (selector) { return parent.jQuery(selector, iframeBody); }; 
    var $ = jQuery; 
} 
+0

यही वह है जिसे मैं ढूंढ रहा था! अगर मैंने jQuery को संदर्भ के रूप में आईफ्रेम पास करने की आवश्यकता है तो मैंने अभी एक सहयोगी से पूछा है। धन्यवाद मोइन! – Kumar

+6

यह उत्तर किसी अन्य स्ट्रिंग चयनकर्ता के अलावा jQuery फ़ंक्शन को ले जा सकते हैं अन्य सभी तर्क प्रकारों पर विचार नहीं करता है। – thwd

+0

मैंने iframebody का उपयोग करने से बेहतर दस्तावेज़ का उपयोग किया: वापसी parent.jQuery (चयनकर्ता, दस्तावेज़) – boisvert

1

आपको iframe के अंदर jQuery लोड करने की आवश्यकता है।

संपादित करें: ठीक है, यदि फ्रेम एक ही डोमेन पर नहीं है, तो आप को jQuery को फिर से लोड करना होगा। ,

if (typeof(jQuery) == "undefined") { 
    window.jQuery = function (selector) { return parent.jQuery(selector, document); }; 
    jQuery = parent.$.extend(jQuery, parent.$); 
    window.$ = jQuery; 
} 

तो हम कार्यों $ .Get तरह $ के उपयोग कर सकते हैं: Access jQuery library from iframe

+0

जो मुझे पता है। लेकिन अगर आप ऊपर दिए गए उदाहरण में console.log jQuery को jQuery ऑब्जेक्ट दिखाते हैं। इसके अलावा मैं parent.object() का उपयोग कर अभिभावक से किसी ऑब्जेक्ट तक पहुंच सकता हूं, फिर jQuery क्यों नहीं? – Kumar

+0

थॉम स्मिथ, आपके द्वारा फिर से लिंक किए गए उत्तर को पढ़ें, अगर आईफ़्रेम अलग डोमेन पर है, तो आपको इसके अंदर jQuery लोड करना होगा। – dimention

+0

से जुड़ा हुआ उत्तर काम नहीं करता है, विवरण के लिए इसकी टिप्पणियां देखें। – boisvert

5

यहाँ एक बेहतर मोइन के उत्तर के आधार पर समाधान है $ .extends, आदि

+0

और 'हेड' में भी काम करता है जबकि मोइन का जवाब 'बॉडी' के अंदर रखा जाना चाहिए – cske

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