2009-02-02 10 views
31

Pour diverses raisons idiotes, j'aimerais pouvoir détecter le rectangle de la fenêtre du navigateur à l'écran. Barre de titre et tout.Déterminer la position de la fenêtre du navigateur en JavaScript?

Est-ce possible, ou est-ce que JavaScript est limité au port de vue de sa page?

Modifier: Je n'ai pas été clair, mais le port d'affichage est la partie de la page qui est visible dans la fenêtre. Ce n'est peut-être pas un terme couramment utilisé avec les navigateurs, mais il est commun dans les graphiques.

Répondre

40

Pour les navigateurs conformes aux normes:

X - window.screenX
Y-window.screenY

Pour IE:

X-window.screenLeft
Y - window.screenTop

Gardez à l'esprit, implementations vary. Méfiez-vous des configurations multi-écrans ...

+4

Je viens de l'essayer aujourd'hui, et screenLeft et screenTop fonctionne dans IE 8, mais screenX et screenY ne fonctionne plus. Semble IE a finalement décidé de coopérer sur celui-ci. Quelqu'un d'autre a les mêmes résultats? – trusktr

+0

thnx..it été très utile –

+0

Ce n'est pas une bonne réponse. Qu'en est-il des configurations multi-moniteurs. Cela ne fonctionne pas. –

-4

copie collée de Google premier résultat:

// Browser Window Size and Position 
// copyright Stephen Chapman, 3rd Jan 2005, 8th Dec 2005 
// you may copy these functions but please keep the copyright notice as well 
function pageWidth() 
{ 
return window.innerWidth != null? window.innerWidth : document.documentElement && document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body != null ? document.body.clientWidth : null; 
} 
function pageHeight() 
{ 
return window.innerHeight != null? window.innerHeight : document.documentElement && document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body != null? document.body.clientHeight : null; 
} 
function posLeft() 
{ 
return typeof window.pageXOffset != 'undefined' ? window.pageXOffset :document.documentElement && document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ? document.body.scrollLeft : 0; 
} 
function posTop() 
{ 
return typeof window.pageYOffset != 'undefined' ? window.pageYOffset : document.documentElement && document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ? document.body.scrollTop : 0; 
} 
function posRight() 
{ 
return posLeft()+pageWidth(); 
} 
function posBottom() 
{ 
return posTop()+pageHeight(); 
} 
+0

De la même page: « Pour être en mesure de déterminer l'espace disponible dans la fenêtre du navigateur et la position actuelle de cette fenêtre dans la page Web actuelle, vous devez copier le script suivant et l'attacher à la section head de votre page. " Je pense que cela signifie viewport. –

+0

Double vérifié, et cela ne fait pas ce que je veux. Lorsque ma fenêtre est au milieu de l'écran, alert (posLeft()) renvoie 0. –

+0

pageXOffset renvoie «Renvoie le nombre de pixels pour lesquels le document a déjà été défilé horizontalement». - pas le décalage sur l'écran –

8

Jetez un oeil aux propriétés suivantes:

(Ceux-ci ne vous donnera pas la taille de la fenêtre ou la position, mais peut vous permettre de les interpréter correctement lors de l'utilisation sur un système avec plusieurs moniteurs)

+1

Ne fonctionne pas dans Chrome. –

+1

Chrome a window.screenTop et window.screenLeft qui semblent être équivalents. – Spencer

Questions connexes