2010-08-12 3 views
0

ok normalement ce serait facile mais pour des raisons visuelles je force mon iframe à la même hauteur que le contenu qu'il contient. Cela ne me donne qu'une seule barre de défilement, la barre de défilement de la fenêtre parent. Le document iframe ne défile jamais. Le problème vient quand j'essaie de centrer un div dans l'iframe. Lorsque la page est défilée quelques pages plus bas, je ne peux pas obtenir une valeur précise du scrolltop. $ (window) .scrollTop() est toujours zéro. Si j'utilise parent.document.documentElement.scrollTop au lieu de $ (window) .scrollTop() j'obtiens une valeur mais il est complètement dehors pour déjeuner. Par exemple, si la hauteur d'iframe est 2011 et que je défile en bas de l'iframe et que j'interroge parent.document.documentElement.scrollTop, j'obtiens une valeur 567 retournée. Ma taille d'écran est 1200jQuery/javascript - Centrez une div dans une zone d'affichage iframe. scrollTop pas précis avec iframe hauteur ajustée

Mêmes résultats dans tous les navigateurs. Testé dernier IE, FF, Opera, Chrome.

Pour simuler

in outerdoc.htm I have 

<iframe id="myFrame" src="doc1.htm"></iframe> 

doc1.htm: 

<html> 
<head> 
<title>my title</title> 
</head> 
<body> 
<p> 10 pages of content near the bottom <div onclick="CenterDiv($('#myDiv'))">show div</div></P> 
<div id="myDiv"></div> 
    <script type="text/javascript" language="javascript"> 
     $(document).ready(function() 
    { 
     $('#myFrame', top.document).height($(document).height()); //sets height of frame to document within 

    }); 
     function CenterDiv(item) 
     { 
     var mtop = ($(window).height()/2 - item.height()/2) + $(top.window).scrollTop()); 
    item.css('top', mtop < 0 ? 0 : mtop);  
     } 
    </script> 
</body> 
</html> 
+0

Avez-vous essayé de le faire sans l'iframe? ... semble inutile au premier abord .. oui – Fosco

+0

fonctionne très bien sans iframe, mais l'iframe est nécessaire. – ethermal

+0

Avez-vous trouvé une solution? –

Répondre

0

je ne pouvais pas régler cette question, mais je me dis que je voulais écrire ce que je faisais travailler autour de cela. J'ai mis le div que je voulais centré sur la page qui contient l'iframe ainsi que la fonction centerdiv. Puis dans le mon code à l'intérieur de l'iframe, j'ai fait ce qui suit.

function CenterDiv(item) 
{ 
if (window.location != window.parent.location) parent.CenterDiv(item);  
}