एक iframe कार्रवाई से मूल विंडो को पुनर्निर्देशित करें


312

एक iframe से पैरेंट विंडो को रीडायरेक्ट करने के लिए मुझे किस जावास्क्रिप्ट का उपयोग करने की आवश्यकता है?

मैं चाहता हूं कि वे एक हाइपरलिंक पर क्लिक करें जो जावास्क्रिप्ट या किसी अन्य विधि का उपयोग करके मूल विंडो को एक नए URL पर पुनर्निर्देशित करेगा।


5
माता-पिता खिड़की, अपने आप में, एक हो सकता है IFrameभी,। चूंकि स्वीकृत उत्तर शीर्ष विंडो को संबोधित करता है , मेरा सुझाव है कि आप अपने प्रश्न को थोड़ा बदल दें।
रॉन क्लेन

जवाबों:


521
window.top.location.href = "http://www.example.com"; 

जैसा कि पहले कहा गया है, अभिभावक iframe को पुनर्निर्देशित करेगा।


मुझे नहीं लगता कि एक ही मूल नीति यहां लागू होती है। यह समझ में आता है कि आपको अपनी साइट को किसी और के iframe से तोड़ने में सक्षम होना चाहिए।
ब्रायन मैकऑलिफ

1
Chrome में, @Parris jsfiddle यह त्रुटि फेंकता है: Unsafe JavaScript URL के साथ फ्रेम से ' jsfiddle.net/ppkzS ' के लिए नेविगेशन आरंभ करने का प्रयास करती है, जिसमें ' parrisstudios.com/tests/ifrun_redirect.html ' URL शामिल है । शीर्ष-स्तरीय विंडो के नेविगेशन का प्रयास करने वाला फ्रेम सैंडबॉक्स किया गया है, लेकिन 'अनुमति-टॉप-नेविगेशन' ध्वज सेट नहीं है।
बज्तेरे औन ओलसेन

1
@BjarteAuneOlsen दिलचस्प है, क्रोम या वेबकिट में हाल ही में बदलाव हो सकता है। यह निश्चित रूप से पहले काम कर रहा था। कुछ साल हो गए :)। इसके अलावा उत्तर में वही मूल नीति लागू होती थी, जो पहले उत्तर को गलत बनाती थी, लेकिन अब इसे सही बनाती है और मेरी टिप्पणी गलत -_-।
पैरिस १

4
@BjarteAuneOlsen - मेरा मानना ​​है कि ऐसा इसलिए है क्योंकि JSFiddle पर iframes को जानबूझकर सैंडबॉक्स किया गया है, इसलिए उन्होंने कुछ सुविधाओं (जैसे पुनर्निर्देशन, आदि) से स्पष्ट रूप से इनकार कर दिया है - एक खतरा है कि आप JS का उपयोग करके JS Fiddle से दूर नेविगेट करेंगे और अपना काम खो देंगे। ..
झाफ - बेन ड्यूगिड

10
जिन त्रुटियों के कारण लोग यहां आ रहे हैं, वे iframes नामक नई HTML5 विशेषता के कारण हैं, " sandbox" - developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe यह sandboxविशेषता iframe आधारित कुछ कार्यों के लिए जावास्क्रिप्ट को रोकती है अनुमत कार्यों के दिए गए श्वेतसूची पर। allow-top-navigationसंपत्ति कार्यों आप श्वेत सूची है, जो काम के लिए इस कोड की अनुमति देता है में सक्षम कर सकते हैं में से एक है। यदि sandboxविशेषता अनुपस्थित है, तो सभी कार्यों की अनुमति है। यदि यह मौजूद है और एक खाली स्ट्रिंग है, तो सभी कार्यों से इनकार कर दिया जाता है।
मार्कस हैरिसन

115

मैंने पाया कि <a href="..." target="_top">link</a>काम भी करता है


7
जबकि चयनित उत्तर सही है, मुझे लगता है कि यह प्रश्न के इरादे के लिए बेहतर उत्तर है। साथ ही, यह उन लोगों के लिए काम करेगा जिनके पास जेएस अक्षम है।
माइकल -

मैं मानता हूं कि यह सबसे अच्छा समाधान है लेकिन ओपी ने विशेष रूप से जावास्क्रिप्ट के लिए कहा है। दूसरी ओर, ओपी ने निर्दिष्ट किया कि इसे एक एंकर के माध्यम से ट्रिगर किया जाना चाहिए - मैं एक परिदृश्य नहीं देख सकता हूं, जहां किसी व्यक्ति को वांछित परिणाम प्राप्त करने के लिए एंकर टैग से जावास्क्रिप्ट का उपयोग करने के लिए मजबूर किया जाएगा, इसके बाद सवाल भ्रामक है।
नोकरईर

2
इतना सरल और सुरुचिपूर्ण। आकर्षण की तरह काम करता है :)
यश

54
window.top.location.href = "http://example.com";

window.top फ्रेम पदानुक्रम के शीर्ष पर पृष्ठ के विंडो ऑब्जेक्ट को संदर्भित करता है।


9
window.top.location.href प्रॉपर्टी को iframe से अपडेट नहीं किया जा सकता, यह पहुंच निषेध नामे को फेंकता है। इसे तभी निष्पादित किया जा सकता है जब आप लोकलहोस्ट पर परीक्षण कर रहे हों
मुहम्मद उम्मर

4
@ उमर: मैं जोड़ूंगा कि यह तब काम करता है जब माता-पिता को एक iframe में एक ही डोमेन, एक ही पोर्ट (समान मूल नीतियां) होती हैं, यह सुरक्षा अपवादों को रोकने के लिए उपयोग से इनकार किए गए अपवाद को फेंक देता है
Quan Mai

5
@ उमर जो सच नहीं है, सबूत के लिए jsfiddle.net/ppkzS । आप window.top.location.href बदल सकते हैं। आप इसे पढ़ नहीं सकते। क्रोम में काम करता है।
पैरिस

Great jsfiddle @Parris, जो इसे मेरे लिए सुलझाता है :)
मैक्स विलियम्स

2
मुझे संदेह है कि कुछ लोग iframe में कुछ इस तरह से कोशिश कर रहे होंगे: window.top.location.href = window.top.location.href ;
mjj1409

15

या एक विकल्प निम्नलिखित है (दस्तावेज़ ऑब्जेक्ट का उपयोग करके)

parent.document.location.href = "http://example.com";

5
वह समाधान फ़ायरफ़ॉक्स विशिष्ट है। बस एक का उपयोग करना चाहिए parent.location.href = ...developer.mozilla.org/en/document.location
kay - SE बुराई है

15

target="_parent"मेरे लिए बहुत अच्छा काम किया। आसान और परेशानी मुक्त!


ये बड़े काम की लगती हैं। क्या जावास्क्रिप्ट के बजाय इस पद्धति का उपयोग करने के लिए कोई डाउनसाइड है?
फ्लाइंगलाइज

मेरी जानकारी में नहीं। कुछ पता चले तो शेयर करें।
rDroid

7

@MIP सही है, लेकिन सफारी के नए संस्करणों के साथ, आपको iFrame पर रीडायरेक्ट एक्सेस देने के लिए सैंडबॉक्स विशेषता (HTML5) को जोड़ना होगा। कुछ विशिष्ट मूल्य हैं जिन्हें उनके बीच के स्थान के साथ जोड़ा जा सकता है।

संदर्भ (आपको स्क्रॉल करने की आवश्यकता होगी): https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe

उदाहरण के लिए:

<iframe sandbox="allow-top-navigation" src="http://google.com/"></iframe>

ध्यान दें कि sandboxविशेषता सामग्री में सामग्री के लिए प्रतिबंधों के एक अतिरिक्त सेट को सक्षम करती है <iframe>sandboxसंपत्ति का मूल्य विशेष प्रतिबंधों को हटा देता है। इसलिए इस सुविधा का उपयोग करके देखें। w3schools.com/tags/att_iframe_sandbox.asp
गीताकार


3

यदि आप उपयोगकर्ता के बिना किसी अन्य डोमेन पर पुनर्निर्देशित करना चाहते हैं, तो आपके पास संपत्ति के साथ लिंक का उपयोग करने के लिए कुछ भी हो सकता है:

target="_parent"

जैसा कि पहले कहा गया था, और फिर उपयोग करें:

document.getElementById('link').click();

इसे स्वचालित रूप से पुनर्निर्देशित करना है।

उदाहरण:

<!DOCTYPE HTML>

<html>

<head>

</head>

<body>

<a id="link" target="_parent" href="outsideDomain.html"></a>

<script type="text/javascript">
    document.getElementById('link').click();
</script>

</body>

</html>

नोट: आपके द्वारा लिंक घोषित करने के बाद जावास्क्रिप्ट क्लिक () कमांड आनी चाहिए।


1

एक iframe से पुनर्निर्देशित करना संभव है, लेकिन माता-पिता से जानकारी प्राप्त नहीं करना।




-2

हमें iframe एक्शन से पेरेंट विंडो को रीडायरेक्ट करने के लिए window.top.location.href का उपयोग करना होगा।

डेमो url :


1
हम कौन हैं? :) क्या आप उत्तर में यूआरएल से आवश्यक भागों को लिख सकते हैं कृपया? URL / लिंक बदल सकते हैं या हटाए जा सकते हैं।
YesThatIsMyName

-8

एक ही माता-पिता में iframe द्वारा मूल विंडो में iframe पुनर्निर्देशित करें:

window.parent.document.getElementById("content").src = "content.aspx?id=12";
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.