2010-08-23 5 views
0

J'ai un objet flash dans ma page que je veux faire aussi grand que possible. La page est à peu près vide, sauf pour une chose: une barre en haut.Mon <object> ignore la hauteur de ses parents

Html:

<head> 
<script type="text/javascript" src="swfobject.js"></script> 
<script type="text/javascript"> 
// setting flashvars, params, attributes 
//... 
// adding swf 
swfobject.embedSWF("myflash.swf", "myAlternativeContent", "100%", "100%", "9.0.114", "swfobject/expressInstall.swf", flashvars, params, attributes); 
</script> 
</head> 
<body> 
<div id='banner'> 
this is random text, could be an image, could be a menu, with a certain random height i cannot predict 
</div> 
<div> 
    <div id="myAlternativeContent"> 
    </div> 
</div> 
</body> 

Quand je l'ai vue cette page dans IE 8, l'objet flash a en effet une hauteur de 100%, mais il est de la fenêtre du navigateur, et non de la div parent. Cela signifie que je reçois une barre de défilement verticale et si je la fais défiler, le flash remplit toute la fenêtre. Ce n'est pas ce que je veux. Je veux que la page n'ait pas de barre de défilement, et que le flash ait la hauteur du reste de la fenêtre.

J'ai essayé cette solution avec javascript (après la div de fermeture):

<script language="javascript" type="text/javascript"> 
function getWindowHeight() { 
    // by http://www.howtocreate.co.uk/tutorials/javascript/browserwindow 
    var myHeight = 0; 
    if(typeof(window.innerWidth) == "number") { 
    //Non-IE 
    myHeight = window.innerHeight; 
    } else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) { 
    //IE 6+ in "standards compliant mode" 
    myHeight = document.documentElement.clientHeight; 
    } else if(document.body && (document.body.clientWidth || document.body.clientHeight)) { 
    //IE 4 compatible 
    myHeight = document.body.clientHeight; 
    } 
    return myHeight; 
} 
var otherheight = document.getElementById("banner").offsetHeight; 
document.getElementById("myAlternativeContent").parentNode.style.height = (getWindowHeight() - otherheight) + "px"; 
</script> 

Mais je vois que même si la hauteur de la div parent se voit affecter la quantité correcte, l'objet flash ignore complètement et ne redessine pas ou quoi que ce soit, et garde juste sa joyeuse taille.

Comment puis-je accomplir ce que je veux faire? Aucune barre de défilement, une bannière sur le dessus, puis le reste de la fenêtre remplie de mon objet flash?

Répondre

0

réponse modifiée: Essayez de modifier l'appel à swfobject.embedSWF de sorte que la hauteur que vous donnez est calculé correctement au lieu d'être un âge% - à savoir le mettre à:

(getWindowHeight() - otherheight) 

Vous devez également faire attention au cas où la fenêtre est redimensionnée ... (Voir point #1). C'est un problème que votre code actuel a aussi

+0

ooh il a fallu un peu de réécriture dans mes fonctions php qui produisent le html, mais ça valait le coup, parce que cela fonctionne, et dans tous les navigateurs que j'ai testé aussi. Merci! – Tominator

+0

Vous êtes les bienvenus :) – Basic

Questions connexes