2017-04-26 5 views
1

Je feuilletais SO et trouvé ceci:dimensions Mise à jour de la fenêtre à la page redimensionnent

var w = window, 
    d = document, 
    e = d.documentElement, 
    g = d.getElementsByTagName('body')[0], 
    x = w.innerWidth || e.clientWidth || g.clientWidth, 
    y = w.innerHeight|| e.clientHeight|| g.clientHeight; 

function t(){ 
    test.innerHTML = "x = "+x+"\ny = "+y; 
} 

window.onload = t; 
window.onresize = t; 

avec un Fiddle Example, et je me demandais s'il y a un moyen de rendre les valeurs actualisées automatiquement quand je redimensionner ma fenêtre sans appuyer manuellement sur F5.

Répondre

1

Vous exécutez la fonction t lors du redimensionnement, mais vous ne mettez pas à jour les valeurs x et y. Ils ne sont mis en charge, d'où le problème. Changez votre logique afin qu'ils soient modifiés dans la fonction. Essayez ceci:

var w = window, 
    d = document, 
    e = d.documentElement, 
    g = d.getElementsByTagName('body')[0], 
    x, y; 

function t() { 
    x = w.innerWidth || e.clientWidth || g.clientWidth; 
    y = w.innerHeight|| e.clientHeight|| g.clientHeight; 
    test.innerHTML = "x = " + x + "\ny = " + y; 
} 

window.onload = t; 
window.onresize = t; 

Updated fiddle

Cela dit, si vous avez besoin de connaître la taille de la fenêtre pour mettre à jour l'interface utilisateur dans certaines conditions, alors vous devriez vraiment utiliser des requêtes de médias CSS, non JS.

+0

Très clair, merci! :) – GiLA3

+0

Puis-je vous poser une autre question connexe rapide? Quelle est la différence entre 'window.width' et' window.innerWidth'? J'ai remarqué avec le premier je ne peux pas faire des opérations comme '* 0.9' pour le redimensionner un peu tandis qu'avec le dernier je peux. – GiLA3

+0

Il n'y a pas de propriété 'window.width' donc je ne suis pas sûr d'où vous obtenez cela. Il est possible que certains navigateurs l'implémentent, mais cela ne fait certainement pas partie de la norme. Je suggère que vous utilisiez toujours 'innerWidth' –

2

Vous devez appeler la fonction sur Redimensionner aussi,

var onresize = function() { 
    x = w.innerWidth || e.clientWidth || g.clientWidth, 
    y = w.innerHeight|| e.clientHeight|| g.clientHeight; 
    test.innerHTML = "x = "+x+"\ny = "+y; 
} 
window.addEventListener("resize", onresize); 
+0

Bien que cet extrait de code puisse résoudre la question, [y compris une explication] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) aide vraiment à améliorer la qualité de votre message. Rappelez-vous que vous répondez à la question pour les lecteurs dans le futur, et que ces personnes pourraient ne pas connaître les raisons de votre suggestion de code. Essayez également de ne pas surcharger votre code avec des commentaires explicatifs, ceci réduit la lisibilité du code et des explications! –