2010-12-10 10 views
30

Ich habe eine Seite, die in einem iframe angezeigt wird.get parent.location.url - iframe - von Kind zu Eltern

Ich muss die parent.location.url mit js von dieser Seite (untergeordnete Seite) bekommen.

Beide Websites befinden sich in unterschiedlichen Domänen.

Ich versuche:

alert (parent.location.url)

Aber ich bekomme diese Fehlermeldung:

Genehmigung http://parentdomain verweigert Eigenschaft Location.URL von http://childdomain zu bekommen.

???? Ist es möglich?

+1

Steuern Sie beide Domänen? wenn ja, wahrscheinlich. Ansonsten nein. – Alohci

Antwort

4

Haben Sie versucht, so etwas wie:

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

Ich habe kein Steuerelement auf der übergeordneten Seite: S –

+6

Wenn Sie nur versuchen, den Referrer zu sehen, (was wäre derjenige, der den Rahmen geladen hat) haben Sie versucht, so etwas wie: if (document.referrer! = ' ') Dokument.schreiben ('Danke für den Besuch von' + document.referrer); – PriorityMark

7

Was Sie zu tun versuchen ist nicht möglich, per se. Es sei denn, Sie haben Kontrolle über den Aufruf der untergeordneten Seite der untergeordneten Seite. Wenn Sie dies tun, können Sie die untergeordnete Seite mit einer get-Anweisung in der URL der übergeordneten Seite aufrufen. Also, wenn Sie Elternseite ist http://parentpage.com dann hier ist, wie Sie den iFrame aufrufen sollten.

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

Dann alles, was Sie in der untergeordneten Seite zu tun haben, die Referenz zu erhalten, ist die Zeichenfolge erhalten mit

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

und extrahieren die URL der übergeordneten Seite, indem sie es aus dieser Zeichenfolge greifen. Ich würde mehr Details geben, aber ich bin mir nicht einmal sicher über die erste Frage, die ich hatte.

+0

Ich habe jede andere hier aufgelistete Methode ausprobiert. Jetzt im Jahr 2015, wegen recht strikten Browsererlaubnis Probleme das JavaScript für diesen Fall zu blockieren. Das Übermitteln der Daten an den iFrame in der URL ist der einzige Weg. – FactoryAidan

2

Es wird nur funktionieren, wenn die übergeordnete Seite und der iframe auf der gleichen Domäne sind. Wenn sie nicht auf der gleichen Domain sind, können Sie versuchen, den Standort durch die src zu übergeben, wie Madison Williams vorgeschlagen.

, die wahrscheinlich ist, warum Sie bekommen "Zugriff verweigert ..."

1

Versuchen:

var pathname = window.parent.location.href 
71

try this:

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

Danke, von all den vorgeschlagenen Lösungen, dies ist die einzige, die mir Info gab, wenn der Iframe auf einer anderen Domain als die aufrufende Seite ist. –

+0

Sie sind herzlich willkommen Mann :) – GianFS

+1

Liebe diese Lösung für die Domain Grund, aber es erhält nicht die vollständige URL. Es fehlt die Hash-Variable, die window.location zurückgibt. – toobulkeh

2

Sie werden in der Lage sein, es zu finden, wie Dies und alle Browser sollten in der Lage sein, es zu unterstützen:

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

Sie sollten damit keine Erlaubnis Fehler bekommen, aber ich kann falsch liegen.

+3

Dies funktioniert nicht in FF18, IE9: Berechtigung verweigert – pulzarraider

1

Verwenden Sie postMessage, um Daten zwischen den Fenstern hin und her zu übertragen. Es ist ein wenig klunkig, aber erforderlich, wenn Windows über die Herkunft kommuniziert.

+0

+1, da dies die einzige Lösung ist, die bei der Verwendung eines SharePoint Hosted Add-In-Teils funktioniert. document.referrer funktioniert nicht, und das Setzen des iframe src-Attributs aus dem Host-Web ist nicht vom Add-In-Teil aus zugänglich. Ich habe sie alle ausprobiert und dieses hat perfekt funktioniert. Vielen Dank! – zpert