La largeur de WebKit n'est pas mise à jour?
-
10-07-2019 - |
Question
J'ai un morceau de code qui tourne sur le redimensionnement de la fenêtre. Je tire les éléments width
et outerWidth
d'un élément de texte en entrée.
Ce processus fonctionne correctement dans tous les navigateurs, à l'exception de Webkit, qui renvoie le résultat approprié de outerWidth
, mais le résultat de width
ne change jamais par rapport à l'original au chargement.
Il s'agit de la sortie actuelle de la console de mon script lors du redimensionnement de la fenêtre du navigateur (il s'agit de Chrome, mais il en va de même 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 en at-il déjà fait l'expérience? Savez-vous pourquoi cela se produit? Et surtout, savez-vous comment contourner le problème? :)
Merci.
La solution
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>