J'ai ce code HTML:
<html>
<head>
<script type="text/javascript">
function GetDoc(x)
{
return x.document ||
x.contentDocument ||
x.contentWindow.document;
}
function DoStuff()
{
var fr = document.all["myframe"];
while(fr.ariaBusy) { }
var doc = GetDoc(fr);
if (doc == document)
alert("Bad");
else
alert("Good");
}
</script>
</head>
<body>
<iframe id="myframe" src="http://example.com" width="100%" height="100%" onload="DoStuff()"></iframe>
</body>
</html>
Le problème est que je reçois le message "Bad". Cela signifie que le document d'iframe n'est pas obtenu correctement et que ce qui est retourné par la fonction GetDoc est le document parent.
Je vous serais reconnaissant si vous disiez où je fais mon erreur. (Je souhaite que le document soit hébergé sur IFrame.)
Merci.
Vous devriez pouvoir accéder au document dans IFRAME en utilisant le code suivant:
document.getElementById('myframe').contentWindow.document
Toutefois, vous ne pourrez pas le faire si la page du cadre est chargée à partir d'un autre domaine (tel que google.com). Ceci est dû au fait que le navigateur politique de même origine .
Le problème est que dans IE (ce que je suppose que vous testez)), l'élément <iframe>
A une propriété document
qui fait référence au document. contenant l'iframe, et ceci est utilisé avant les propriétés contentDocument
ou contentWindow.document
.
function GetDoc(x) {
return x.contentDocument || x.contentWindow.document;
}
De plus, document.all
N'est pas disponible dans tous les navigateurs et n'est pas standard. Utilisez document.getElementById()
à la place.