Note : L'extrait ne fonctionnerait que si l'iframe a la même origine.
D'autres réponses ont proposé le load
mais il déclenche après la nouvelle page dans l'iframe est chargée. Vous pourriez avoir besoin d'être informé immédiatement après le changement d'URL et non après le chargement de la nouvelle page.
Voici une solution simple en JavaScript :
function iframeURLChange(iframe, callback) {
var unloadHandler = function () {
// Timeout needed because the URL changes immediately after
// the `unload` event is dispatched.
setTimeout(function () {
callback(iframe.contentWindow.location.href);
}, 0);
};
function attachUnload() {
// Remove the unloadHandler in case it was already attached.
// Otherwise, the change will be dispatched twice.
iframe.contentWindow.removeEventListener("unload", unloadHandler);
iframe.contentWindow.addEventListener("unload", unloadHandler);
}
iframe.addEventListener("load", attachUnload);
attachUnload();
}
iframeURLChange(document.getElementById("mainframe"), function (newURL) {
console.log("URL changed:", newURL);
});
<iframe id="mainframe" src=""></iframe>
Cela permettra de suivre avec succès le src
ainsi que tout changement d'URL effectué à l'intérieur de l'iframe lui-même.
Testé dans tous les navigateurs modernes.
J'ai fait un Gist avec ce code également. Vous pouvez consulter mes autres réponse aussi. Il explique en détail comment cela fonctionne.
5 votes
Est-ce que le
src
change-t-elle lorsqu'on clique sur un lien dans l'iframe ? Je ne suis pas sûr de cela - si je devais deviner, je dirais "non". Il y a sont Il existe des moyens de contrôler les propriétés (dans Firefox au moins AFAIK) mais je ne suis pas sûr que cela soit utile dans ce cas.0 votes
J'essaie de mettre en œuvre quelque chose de ce genre, et je peux confirmer que la fonction
src
dans le DOM fait no changement dans les dernières versions de FireFox ou de Safari. La réponse de @Michiel ci-dessous est la meilleure que j'ai pu obtenir jusqu'à présent.