web-dev-qa-db-fra.com

get parent.location.url - iframe - de l'enfant au parent

J'ai une page qui s'affiche dans un iframe.

J'ai besoin d'obtenir le parent.location.url avec js à partir de cette page (page enfant).

Les deux sites sont dans des domaines différents.

J'essaie:

alert (parent.location.url)

Mais je reçois cette erreur:

Autorisation refusée pour http: // parentdomain pour obtenir la propriété Location.URL de http: // childdomain .

???? C'est possible?

31
Carlos Castillo

essaye ça:

var referrer = document.referrer;
alert(referrer);
72
GianFS

Ce que vous essayez de faire n'est pas possible en soi. Sauf si vous avez le contrôle sur l'appel de la page parent de la page enfant. Si vous le faites, vous pouvez appeler la page enfant avec une instruction get dans l'URL de la page parent. Donc, si votre page parent est http://parentpage.com alors voici comment vous devez appeler l'iFrame.

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

Ensuite, tout ce que vous avez à faire dans la page enfant pour obtenir la référence est d'obtenir la chaîne avec

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

et extrayez l'URL de la page parent en la récupérant de cette chaîne. Je donnerais plus de détails, mais je ne suis même pas sûr de la première question que j'avais.

7
Madison Williams

Avez-vous essayé quelque chose comme:

alert(window.top.location.href);
4
PriorityMark

Cela niquement fonctionnera si la page parent et l'iframe sont sur le même domaine. S'ils ne sont pas sur le même domaine, vous pouvez essayer de passer l'emplacement via le src , comme l'a suggéré Madison Williams.

C'est probablement pourquoi vous obtenez "Autorisation refusée ..."

2
JCOC611

Vous pourrez le trouver ainsi, et tous les navigateurs devraient pouvoir le prendre en charge:

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

Vous ne devriez pas obtenir d'erreurs d'autorisation avec cela, mais je peux me tromper.

2
Rob

Utilisez postMessage pour transmettre des données dans les deux sens entre les fenêtres. C'est un peu délicat, mais nécessaire lorsque les fenêtres communiquent entre les origines.

1
bigmac

Essayer:

var pathname = window.parent.location.href
1
Supratim