J'ai fait quelques tests dans Firefox 3 en comparant la valeur de .src
et .documentWindow.location.href
dans un iframe
. (Remarque : Le documentWindow
est appelé contentDocument
dans Chrome, donc au lieu de .documentWindow.location.href
dans Chrome, ce sera .contentDocument.location.href
.)
src
est toujours la dernière URL qui a été chargée dans l'iframe sans interaction de l'utilisateur. C'est-à-dire, il contient la première valeur pour l'URL, ou la dernière valeur que vous avez définie avec JavaScript à partir de la fenêtre conteneur en faisant :
document.getElementById("myiframe").src = 'http://www.google.com/';
Si l'utilisateur navigue à l'intérieur de l'iframe, vous ne pouvez plus accéder à la valeur de l'URL en utilisant src. Dans l'exemple précédent, si l'utilisateur quitte www.google.com et que vous faites :
alert(document.getElementById("myiframe").src);
Vous obtiendrez toujours "http://www.google.com".
documentWindow.location.href
est disponible uniquement si l'iframe contient une page dans le même domaine que la fenêtre conteneur, mais s'il est disponible, il contient toujours la bonne valeur pour l'URL, même si l'utilisateur navigue dans l'iframe.
Si vous essayez d'accéder à documentWindow.location.href
(ou quoi que ce soit sous documentWindow
) et que l'iframe est dans une page qui n'appartient pas au domaine de la fenêtre conteneur, cela provoquera une exception :
document.getElementById("myiframe").src = 'http://www.google.com/';
alert(document.getElementById("myiframe").documentWindow.location.href);
Erreur : Autorisation refusée pour obtenir la propriété Location.href
Je n'ai pas testé d'autres navigateurs.
J'espère que cela aide!