2010-12-10 18 views
30

मुझे एक पृष्ठ मिला जो एक आईफ्रेम के भीतर प्रदर्शित होता है।parent.location.url - iframe - बच्चे से पैरेंट

मुझे उस पृष्ठ (बच्चे पृष्ठ) से जेएस के साथ parent.location.url प्राप्त करने की आवश्यकता है।

दोनों साइटें अलग-अलग डोमेन में हैं।

मैं कोशिश कर रहा हूँ:

चेतावनी (parent.location.url)

लेकिन मैं इस त्रुटि मिलती है:

अनुमति http://parentdomain के लिए इनकार किया http://childdomain से संपत्ति Location.URL मिलता है।

???? क्या यह संभव है?

alert(window.top.location.href); 
+1

क्या आप दोनों डोमेन नियंत्रित करते हैं? यदि हां, तो शायद। अन्यथा नहीं। – Alohci

उत्तर

4

आप की तरह कुछ कोशिश की है। जब तक कि आप बच्चे के पृष्ठ के अभिभावक पृष्ठ के कॉलिंग पर नियंत्रण न रखें। यदि आप करते हैं, तो आप मूल पृष्ठ के यूआरएल में प्राप्त विवरण के साथ बच्चे पेज को कॉल कर सकते हैं। तो यदि आप मूल पृष्ठ http://parentpage.com है तो यहां बताया गया है कि आपको iFrame को कैसे कॉल करना चाहिए।

<iframe src='http://childpage.com/?parent=http://parentpage.com' /> 

फिर तुम सब बच्चे पेज में करने के लिए संदर्भ प्राप्त करने के लिए

window.location.search //not sure of browser compatibility with this 

के साथ स्ट्रिंग मिलता है और यह है कि स्ट्रिंग से बाहर हथियाने द्वारा पेरेंट पृष्ठ के URL निकालने है। मैं अधिक जानकारी दूंगा, लेकिन मुझे पहले सवाल के बारे में भी यकीन नहीं है।

+0

मेरे पास मूल पृष्ठ पर कोई नियंत्रण नहीं है: S –

+6

यदि आप केवल रेफरर को देखने का प्रयास कर रहे हैं, (जो उस फ्रेम को लोड करता है) तो आपने कुछ ऐसा करने की कोशिश की है: यदि (document.referrer! = ' ') दस्तावेज।लिखें ('document.referrer' से मिलने के लिए धन्यवाद); – PriorityMark

7

तुम क्या करने की कोशिश कर रहे क्या संभव प्रति नहीं है:

+0

मैंने यहां सूचीबद्ध हर अन्य विधि की कोशिश की। अब 2015 में, इस मामले के लिए जावास्क्रिप्ट को अवरुद्ध करने वाली काफी सख्त ब्राउज़र अनुमति समस्याओं के कारण। यूआरएल में आईफ्रेम में डेटा पास करना एकमात्र तरीका है। – FactoryAidan

2

यह केवल काम करेगा यदि मूल पृष्ठ और आईफ्रेम एक ही डोमेन पर हैं। यदि वे एक ही डोमेन पर नहीं हैं तो आप src के माध्यम से स्थान पारित करने का प्रयास कर सकते हैं, जैसे मैडिसन विलियम्स ने सुझाव दिया था।

कि शायद इसी कारण आप हो रही है "अनुमति अस्वीकृत ..."

1

प्रयास करें:

var pathname = window.parent.location.href 
71

इस प्रयास करें:

var referrer = document.referrer; 
alert(referrer); 
+2

धन्यवाद, सभी प्रस्तावित समाधानों में से, यह एकमात्र ऐसा है जिसने मुझे जानकारी दी जब कॉलिंग पेज की तुलना में iframe एक अलग डोमेन पर है। –

+0

आपका स्वागत है आदमी :) – GianFS

+1

डोमेन कारण के लिए इस समाधान को प्यार करता है, लेकिन इसे पूरा यूआरएल नहीं मिलता है। इसमें हैश वैरिएबल गुम है कि खिड़की। स्थान वापस आ जाएगा। – toobulkeh

2

आप की तरह इसे खोजने के लिए सक्षम हो जाएगा यह, और सभी ब्राउज़रों को इसका समर्थन करने में सक्षम होना चाहिए:

query = window.parent.location.search.substring(1); 

आपको इसके साथ अनुमति त्रुटियां नहीं मिलनी चाहिए, लेकिन मैं गलत हो सकता हूं।

+3

यह एफएफ 18, आईई 9 में काम नहीं करता है: अनुमति – pulzarraider

1

विंडोज़ के बीच डेटा को आगे और आगे पास करने के लिए postMessage का उपयोग करें। यह थोड़ा सा कर्कश है, लेकिन जब खिड़कियां मूल में संचार करती हैं तो आवश्यक होती है।

+0

+1 से इनकार कर दी गई है क्योंकि यह एकमात्र समाधान है जो शेयरपॉइंट होस्टेड एड इन पार्ट का उपयोग करते समय काम करता है। document.referrer काम नहीं करता है, और मेजबान वेब से iframe src विशेषता सेट करना भाग में जोड़ने के भीतर से उपलब्ध नहीं है। मैंने उन सभी की कोशिश की और यह पूरी तरह से काम किया। धन्यवाद! – zpert

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