2012-03-20 13 views
9

से अभिभावक विंडो एक्सेस करें IFrame में विंडो को किसी अन्य डोमेन से लोड किया गया था, तो IFrame से पैरेंट विंडो तक पहुंचने का कार्य आया है। अगर मैं सही ढंग से समझता हूं, तो सभी आधुनिक ब्राउज़र अब ऐसा करने की अनुमति देते हैं। तो मैं सबसे अच्छा समाधान खोजने के लिए यहां हूँ।iframe (क्रॉस-डोमेन)

मैं इसे भीतर एक iFrame से आच्छादन है:

मैं यह अगले रास्ता पूरा करने के लिए जा रहा हूँ। पॉप-अप अवरोधकों को मेरी सामग्री को अवरुद्ध करने से रोकने के लिए यह पॉप-अप के बजाय काम करेगा। कार्य मुख्य पृष्ठ को फिर से लोड करना है जब iFrame में दस्तावेज़ कुछ काम समाप्त करता है। एक दस्तावेज है, जो एक iframe पर लोड किया जाएगा में, मैं अगर यह div मैं समारोह जोड़ देंगे एक माता पिता खिड़की है, जो हर दूसरे बुलाया जाएगा और जांच में

<div id="is_closed" class="false"></div> 

जोड़ देगा अभी भी वर्ग के नाम "झूठे है "। जब इसे "सत्य" में बदल दिया जाएगा, तो मैं कुछ कॉलबैक कॉल करूंगा।

यदि आपके पास कोई बेहतर समाधान है, तो कृपया इसे मेरे साथ साझा करें। किसी भी मदद की सराहना करेंगे।

संपादित करें: यह असंभव है क्योंकि बाल खिड़की से पैरेंट विंडो में हेरफेर करना न केवल असंभव है, बल्कि इसके विपरीत भी। मेरा विचार मूल खिड़की से बाल खिड़की में हेरफेर करना था। मैं गलत था।

+1

'अगर मैं सही ढंग से समझ, सभी आधुनिक ब्राउज़रों अब ऐसा करने की अनुमति है। तो मैं सबसे अच्छा समाधान खोजने के लिए यहां हूं। यह ** ** आपका समाधान है। आप जो पूछ रहे हैं वह संभव नहीं है। –

+8

'postMessage' अलग-अलग डोमेन पर iframes में काम करता है। – kirilloid

+1

मालकिन: यदि यह संभव था, तो कोई भी इफ्रेम सामग्री होस्टिंग पृष्ठ को हाइजैक कर सकती है। यह डिलीवरी को अक्षम कर दिया गया है। कोई काम नहीं-चारों ओर "सर्वश्रेष्ठ समाधान" नहीं। –

उत्तर

12

यदि मैं सही ढंग से समझता हूं, तो सभी आधुनिक ब्राउज़र अब ऐसा करने की अनुमति देते हैं। तो मैं सबसे अच्छा समाधान खोजने के लिए यहां हूँ।

यह अपने समाधान है। आप जो पूछ रहे हैं वह संभव नहीं है।

संपादित

नीचे टिप्पणी, @JeremysA में उल्लेख किया है:

संबंधित प्रश्न देखें विस्मयकारी उत्तर एक ऐसी विधि प्रदान करता है जो कुछ परिस्थितियों में क्रॉस-डोमेन अनुरोधों को अनुमति देगा। अधिक जानकारी के लिए नीचे SO प्रश्न देखें।

Ways to circumvent the same-origin policy

+1

मैं समझता हूं कि बच्चे विंडो से _manipulate_ पैरेंट विंडो को असंभव है। मैं जो खोज रहा हूं वह यह है कि इस हेरफेर को _imitate_ कैसे करें। दूसरे शब्दों में, बाल खिड़की से कुछ ध्वज जिस पर पैरेंट विंडो कोड का कुछ टुकड़ा चलाएगी, करेगी। –

+1

@ माल्गिन, फिर से, यह संभव नहीं है। आप पृष्ठों के बीच ** स्क्रिप्ट स्तरीय इंटरैक्शन ** के लिए पूछ रहे हैं। यह नहीं हो सकता। आप ऐसा कुछ नहीं कर सकते जो नहीं किया जा सकता है। एसओ पर बहुत सारे प्रश्न हैं जो इससे निपटते हैं। संपादन देखें। –

+1

एकमात्र चीज जो मुझे आपके जवाब से स्पष्ट नहीं थी वह यह है कि बच्चे की खिड़की से मूल विंडो में हेरफेर करना असंभव है। यही मेरा विचार था जिसने मुझे और अधिक लगातार बना दिया। एक बार फिर धन्यवाद। –

5

लेकिन आप iframe की src विशेषता (उदाहरण के लिए एक #hashtag जोड़ने) बदल सकते हैं और चाइल्ड विंडो में onhashchange घटना को सुन सकते हैं। यह देखते हुए कि आप दोनों पृष्ठों को बदलने की स्थिति में हैं।

35

यदि मैं आप थे तो मैं window.postMessage की जांच करूंगा। यह तुम क्या चाहते हो सकता है:

संदर्भ के लिए निम्न देखें:

+1

यह सही जवाब है। विंडो.postMessage का उपयोग कर एचटीएमएल 5 में विंडोज़ (या iframes) के बीच क्रॉस-डोमेन जेएस कॉल अब संभव है। – Molomby

+0

आईई frandroid

-3

सत्र स्टोरेज में एक चर/आइटम सेट करें और अपनी इच्छानुसार दोनों तरफ इसका उपयोग करें। स्थानीय स्टोरेज इसे लंबे समय तक कर सकता है।

सुरक्षा जोखिम किसी व्यक्ति का उपयोग करता है और आपकी तरफ से हाइजैक करने के लिए इसका उपयोग करता है। लेकिन अगर कोई ऐसा करना चाहता है - तो हमेशा एक संभावना होगी।

याद रखें: जीवन एक तरह से पाता है ... ;-)

+1

प्रश्न पार डोमेन पहुंच था। आप स्थानीय स्टोरेज/सत्र स्टोरेज क्रॉस डोमेन तक नहीं पहुंच सकते हैं? – Sudi

+0

यदि आप चर के नाम जानते हैं तो आप इसे क्रॉस डोमेन का उपयोग कर सकते हैं –