2010-10-05 3 views
0

lorsque j'appelle la méthode getAbsoluteLeft/Top, je reçois toujours 0 dans firefox. Pour l'IE, j'obtiens une valeur qui semble correcte. Y a-t-il des problèmes connus en utilisant ces méthodes? Mon problème est que je veux définir la position d'un élément avec les valeurs de position absolues d'un autre élément. Merci d'avance. Edit: En utilisant GWT 2.0.3GWT getAbsoluteLeft/Top renvoie une valeur erronée dans FF

Kuku

EDIT Testcase: 1. La page d'accueil:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
    <title>Web Application Starter Project</title> 
    <script type="text/javascript" language="javascript" src="samplegwt/samplegwt.nocache.js"></script> 
    <script type="text/javascript" language="javascript"> 
    function execute() { 
    var element = document.getElementById("paragraph");  
    if (element != undefined) 
     element.style.display = "block"; 
    } 
</script> 
<STYLE TYPE="text/css"> 
#paragraph { 
    display: none; 
} 
</STYLE> 
</head> 
<body class="body" onload="execute()"> 
    <div align="center"> 
    <table> 
    <tr> 
     <td> 
     <p id="paragraph"> 
     <input type="text" id="example" value="Foobar" >&nbsp;<a href="#"><img border="0" src="images/some.gif" alt="Test"></a></p> 
     </td> 
     </tr> 
    </table> 
</div> 
    </body> 
</html> 

Dans le onModuleLoad() je fais simplement ceci: System.out.println(Document.get().getElementById("paragraph") .getAbsoluteLeft());

+0

Pouvez-vous poster un exemple de code? –

+0

Wow .. quand j'ai lu votre question j'étais déjà à la maison mais je pensais que je connais la structure DOM afin que je puisse construire un cas de test simple. Quand j'ai fait en quelque sorte tout a fonctionné comme prévu. Puis, après plusieurs tests, il m'a frappé, je suis assez sûr que la raison est que l'élément que j'essaye d'aller chercher la valeur absoluteLeft a le style. display: none et est affiché: bloc sur la charge du corps. J'ai fait un petit exemple que je vais joindre dès que possible. Ce que je ne sais pas c'est pourquoi cela fonctionne dans IE (ce qui signifie que la valeur de retour est appropriée) mais pas dans FF. – kukudas

+0

Vous devez être très prudent dans de telles situations afin de ne pas rencontrer de mauvaises conditions de course. L'ordre dans lequel vous avez placé vos balises de script et CSS (si vous créez un lien vers des fichiers externes au lieu que le CSS soit en ligne) peut déterminer si le JavaScript se déclenche avant la mise en forme. IE est probablement en cours d'exécution onModuleLoad avant votre affichage CSS: aucun ne prend effet, vous donnant la valeur d'origine. FF est plus que probablement en attente de lancer surModuleLoad jusqu'après l'affichage CSS: none hits mais avant l'onload du corps, vous donnant 0, ce qui est correct lorsque display est none. –

Répondre

1

Bien que indiqué dans les commentaires le problème était que l'élément n'est pas visible qui se traduit par 2 comportements différents pour IE et FF.

Questions connexes