2009-08-02 8 views
1

J'ai un morceau de code qui s'exécute sur le redimensionnement de la fenêtre. Je tire le width, et le outerWidth d'un élément de texte d'entrée.La largeur de WebKit n'est pas mise à jour?

Ce processus fonctionne très bien dans tous les navigateurs, sauf Webkit, qui renvoie le résultat correct de outerWidth, mais le résultat de widthne change jamais de la charge sur d'origine.

Ceci est la sortie de la console réelle de mon script lors du redimensionnement de la fenêtre du navigateur (Ceci est Chrome, mais le même phénomène se produit dans Safari 4):

outerWidth: 772 
width: 772 
outerWidth: 773 
width: 772 
outerWidth: 773 
width: 772 
outerWidth: 794 
width: 772 
outerWidth: 794 
width: 772 
outerWidth: 815 
width: 772 
outerWidth: 815 
width: 772 
outerWidth: 820 
width: 772 
outerWidth: 837 
width: 772 

Quelqu'un at-il connu avant? Savez-vous pourquoi cela arrive? Et le plus important, savez-vous comment contourner cela? :)

Merci.

+0

Pourriez-vous poster un message quelconque? Je viens d'essayer avec Safari 4 et les deux fonctionnent comme prévu. – tom

Répondre

0

Voici mon cas de test. Les deux semblent fonctionner comme prévu (Safari 4).

<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
    <style type="text/css"> 
    input { 
     width: 50%; 
     height: 2em; 
     font-size: 1em; 
    } 
    </style> 
</head> 
<body> 
    <p> 
    <input type="text" id="w" /> 
    </p> 
    <p> 
    <input type="text" id="ow" /> 
    </p> 
    <script type="text/javascript"> 
    function init(){ 
     $('#w').val($('#w').width()); 
     $('#ow').val($('#ow').outerWidth()); 
    } 
    $(function(){ 
     init(); 

     $(window).resize(function(){ 
     init(); 
     }); 
    }); 
    </script> 
</body> 
</html> 
+1

Fonctionne bien dans Safari 4. Ancienne version de jQuery peut-être? –