web-dev-qa-db-fra.com

Obtenir l'URL actuelle d'IFRAME

Existe-t-il un moyen simple d'obtenir l'URL actuelle à partir d'un iframe?

Le spectateur passerait par plusieurs sites. J'imagine que j'utiliserais quelque chose en javascript.

82
chris

Pour des raisons de sécurité, vous ne pouvez obtenir l'URL que tant que le contenu de l'iframe, ainsi que le code JavaScript de référencement, sont servis à partir du même domaine. Tant que cela est vrai, quelque chose comme cela fonctionnera:

document.getElementById("iframe_id").contentWindow.location.href

Si les deux domaines ne concordent pas, vous rencontrerez des restrictions de sécurité de script de référence entre sites.

Voir aussi réponses à une question similaire .

142
kkyy

Si votre iframe provient d'un autre domaine, (cross domain), les autres réponses ne vous aideront pas ... vous devrez simplement utiliser ceci:

var currentUrl = document.referrer;

et - ici vous avez l'URL principale!

24
ParPar

J'espère que cela aidera certains comment, dans votre cas, j'ai souffert du même problème et que je viens d'utiliser localstorage pour partager les données entre la fenêtre parente et l'iframe. Donc, dans la fenêtre parent, vous pouvez:

localStorage.setItem("url", myUrl);

Et dans le code où la source iframe est simplement extraire ces données de localstorage:

localStorage.getItem('url');

M'a sauvé beaucoup de temps. Autant que je sache, la seule condition est l'accès au code de la page parent. J'espère que cela aidera quelqu'un.

2
Beny

Si vous êtes dans le contexte iframe,

vous pourriez faire

const currentIframeHref = new URL(document.location.href);
const urlOrigin = currentIframeHref.Origin;
const urlFilePath = decodeURIComponent(currentIframeHref.pathname);

Si vous êtes dans la fenêtre/le cadre parent, vous pouvez utiliser la réponse de https://stackoverflow.com/a/938195/230524 , qui est

document.getElementById("iframe_id").contentWindow.location.href
0
Alan Dong