J'ai un iframe dans mon HTML, et je veux être averti quand il est complètement chargé. J'ai ce testcase:Le gestionnaire d'événements pour iframe n'est pas chargé
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Test</title>
<script language="javascript" type="text/javascript">
function addListener(el, type, func, capture) {
if (el.addEventListener){
el.addEventListener(type, func, capture);
} else if (el.attachEvent){
el.attachEvent('on'+type, func);
}
}
function addhandlers(frame) {
addListener(frame, "load", function(e) { onDomLoaded(e); }, true);
}
function onDomLoaded(e) {
alert("loaded");
}
</script>
</head>
<body>
<form action="#">
<input type="button" value="Add handlers" onclick="addhandlers(window.frames[0]);" />
</form>
<iframe id="frm" height="300" src="test.htm" width="700"></iframe>
</body>
</html>
Le fichier test.htm est juste un fichier HTML standard avec quelques liens réguliers vers des lieux. D'abord, je clique sur le bouton Ajouter des gestionnaires pour ajouter les écouteurs, puis je clique sur n'importe quel lien dans test.htm à l'intérieur de l'iFrame. Mon attente est que je reçois une alerte, mais rien ne se passe. Pourquoi, et comment le résoudre? Je suis actuellement à la recherche d'une solution qui fonctionne dans firefox et IE (mais rien ne se passe dans les deux navigateurs).
** Vous ne pouvez pas accéder à un IFrame qui n'est pas dans votre domaine, période **. C'est un trou de sécurité de la taille du Texas. La plupart, sinon tous les navigateurs modernes l'empêchent en interne. Je vous suggère de lire sur XSS (cross site scripting) pour mieux le comprendre. –