2010-06-30 9 views
2

Cela doit être quelque chose de très simple pour les experts JavaScript là-bas. Dans le code suivant, j'essaie d'ouvrir une iframe à la hauteur maximale de la fenêtre du navigateur.JavaScript getElementById (...) est null ou un objet IE

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

<!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 runat="server"> 
    <title>Untitled Page</title> 
     <script language="javascript" type="text/javascript"> 
    function resizeIframe() { 
    var height = document.documentElement.clientHeight; 
    height -= document.getElementById('documentFrame2').offsetTop; 
    height -= 20; 
    document.getElementById('documentFrame2').style.height = height +"px"; 
}; 
document.getElementById('documentFrame2').onload = resizeIframe; 
window.onresize = resizeIframe; 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
    <iframe src="standard-tube-map.pdf" id="documentFrame2" width="100%" onload="resizeIframe();" ></iframe> 
    </div> 
    </form> 
</body> 
</html> 

Il fonctionne dans Mozilla mais dans IE (uniquement testé dans IE8), il donne l'erreur: «document.getElementById (...) est nulle ou non un objet. Quelqu'un peut-il suggérer ce que je devrais changer pour le faire fonctionner navigateur croisé?

Un grand merci, Ali

Répondre

0

vous faire

document.getElementById('documentFrame2').onload = resizeIframe; 

avant que le document est prêt pour que l'iframe se trouve. appelez ceci dans la fonction onload- ou document-ready ou dans un javascript-block séparé après le iframe.

+0

Juste enlevé le script de et placé à l'intérieur après le