2011-11-28 11 views
11

क्या माता-पिता के जावास्क्रिप्ट से आईफ्रेम की जावास्क्रिप्ट ऑब्जेक्ट्स तक पहुंच बनाना संभव है?मूल पृष्ठ से iframe की जावास्क्रिप्ट ऑब्जेक्ट्स तक कैसे पहुंचे?

+2

यह इस बात पर निर्भर करता है कि आईफ़्रेम एक ही डोमेन से है या नहीं। यदि हां, तो हाँ, यदि नहीं, तो नहीं। –

उत्तर

17

इसे आजमाएं। मुझे लगता है कि आपकी आईफ्रेम की आईडी "targetFrame" है और जिस ऑब्जेक्ट को आप कॉल करना चाहते हैं वह targetObject है और वे भी एक ही डोमेन हैं। वे एक ही डोमेन नहीं हैं, तो मुझे लगता है कि iframe src एक ही मूल/अभिभावक के रूप में डोमेन में नहीं है, तो आप प्रतिबंध

वही की वजह से

होगा यह संभव .:

document.getElementById('targetFrame').contentWindow.targetObject 
+4

कृपया ध्यान रखें कि, आपको बच्चे 'विंडो' ऑब्जेक्ट –

4

नहीं है मूल-नीति (सुरक्षा नीति) https://developer.mozilla.org/en/Same_origin_policy_for_JavaScript

नीति ऐसी CSRF टोकन और अन्य निजी डेटा फ्रेम में संग्रहीत के रूप में निजी डेटा तक पहुँचने, उदाहरण के लिए ब्लॉक करने के लिए यदि आप bank.com की एक iframe के साथ एक html पृष्ठ का निर्माण की योजना बनाई है तब जब लोग आपकी साइट पर जाते हैं तो वे बैंक.com में लॉग इन होते हैं आर निजी डेटा आईफ्रेम में संग्रहीत किया जाएगा, इसी कारण से मूल-पॉलिसी अलग-अलग उत्पत्ति को आईफ्रेम के माध्यम से एक दूसरे के डेटा तक पहुंचने से रोक देगा।

2

आप माता-पिता की विंडो ऑब्जेक्ट का उपयोग करके बच्चे आईफ्रेम की ऑब्जेक्ट्स तक पहुंच सकते हैं।

alert(window.frames[0].variable_name); 

यह पहले iFrame से परिवर्तनीय, variable_name का मान दिखाएगा। फ्रेम सूची में अनुक्रमणिका का उपयोग फ्रेम में चर के मानों तक पहुंचने के लिए किया जा सकता है।

+0

ES6/ES2015 अपडेट तक पहुंचने के लिए एक ही डोमेन में होना चाहिए: यह केवल तभी काम करता है जब 'variable_name' को 'var variable_name' के रूप में घोषित किया गया हो,' 'variable_name के रूप में नहीं ; '। [एमडीएन] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let): "var' के विपरीत, 'चलो', वैश्विक वस्तु पर कोई संपत्ति नहीं बनाता है । " – cxw

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