Connaitre la position de la fenêtre ouverte en JS ?

Connaitre la position de la fenêtre ouverte en JS ? - HTML/CSS - Programmation

Marsh Posté le 31-03-2003 à 11:04:26    

Question très bête. Je me souviens plus comment on fait...  :heink:

Reply

Marsh Posté le 31-03-2003 à 11:04:26   

Reply

Marsh Posté le 31-03-2003 à 11:18:40    


avec screenX screenY  :??:  
 

Reply

Marsh Posté le 31-03-2003 à 11:21:47    

Nope.
 
document.screenX ne marche pas.
 
ni window.screenX non plus.
 
Je veux CONNAITRE la position de la fenêtre et non la DETERMINER.
 
 
Après réflexion et consultation des propriétés de screen, j'ai l'impression que ce n'est pas possible hélas...  :heink:

Reply

Marsh Posté le 31-03-2003 à 11:29:12    

window.screen.left et window.screen.top ?


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 31-03-2003 à 12:38:10    

Plus exactement :  
window.top.screenLeft et window.top.screenTop
 
(testé seulement sous IE)

Reply

Marsh Posté le 31-03-2003 à 14:18:51    

Merci Walli.
 
Ta solution ne fonctionne qu'avec IE hélas...
 
Pour GM : Non ta solution ne fonctionne pas.
 
Je cherche a CONNAITRE la position de la fenêtre, pas à la DETERMINER. Je n'ai aucun problème pour DETERMINER la position d'une fenêtre avant de l'ouvrir par exemple.
 
Moi je veux CONNAITRE la position de la fenêtre en cours APRES qu'elle soit ouverte.  ;)  
 
Je cherche donc toujours une solution qui fonctionne avec IE, Moz et Opera... :/

Reply

Marsh Posté le 31-03-2003 à 14:40:11    

Pas de soluces, c'est ça hein ?  :(

Reply

Marsh Posté le 31-03-2003 à 14:45:00    

Au fait, question con, c'est pourquoi que tu veux faire ca ? pour faire du cascading/mosaicking ?


---------------
get amaroK plugin
Reply

Marsh Posté le 31-03-2003 à 14:45:33    

une solution pour les 3 en même temps je sais pas.
sous mozilla c'est pas ScreenX ?

Reply

Marsh Posté le 31-03-2003 à 16:02:32    

bobuse a écrit :

Au fait, question con, c'est pourquoi que tu veux faire ca ? pour faire du cascading/mosaicking ?


 
Non, c'est tout con en fait. Je veux réaliser un popup genre copyright avec les outils que j'ai utilisé pour faire le site.  
 
Or pour centrer un popup, par RAPPORT A LA FENETRE EN COURS, il n'y a aucune possibilité. En effet, en utilisant les propriétés habituelles, on arrive à centre le popup en fonction de la taille de l'écran, ce que je ne veux pas.  
 
Pour REELLEMENT centrer un popup par rapport à la fenêtre en cours, il faut connaitre la largeur et la hauteur de la fenetre mais aussi LA POSITION de la fenêtre sur l'écran. Moi par exemple, je suis en 1600 en donc je ne surfe JAMAIS en plein écran. La fenêtre de mon navigateur peut se trouver n'importe où.
 
Oui, je sais, je suis connement perfectionniste  [:totozzz] Mais on ne se refait pas.  [:yaisse2]

Reply

Marsh Posté le 31-03-2003 à 16:02:32   

Reply

Marsh Posté le 31-03-2003 à 16:05:38    

walli a écrit :

une solution pour les 3 en même temps je sais pas.
sous mozilla c'est pas ScreenX ?
 


Yep, bravo, en effet Mozilla veut bien le ScreenX
 
Opera par contre, c'est pas trop ça  :D  Il donne toujours -4 comme valeur. Pas terrible. [:rofl]  
 
C'est vraiment la jungle quand même ces histoires de javascript.
 
Je crois que je vais laisser tomber. Je vais quand même pas faire une multidétection de nav pour un popup.  [:totozzz]

Reply

Marsh Posté le 31-03-2003 à 16:27:48    

Mmmm dans ma doc de Mozilla, j'avais ceci pour screenX :
 

Citation :

window.screenX : Returns the horizontal location of the mouse in pixels from the left.


 
Je regarde sur la doc en ligne http://www.mozilla.org/docs/dom/do [...] ml#1011624 !
 

Citation :

window.screenX : Returns the horizontal distance of the left border of the user's browser from the left side of the screen.


 
On dirait qu'ils savent pas bien ce qu'ils veulent...
 
 
Enfin bref, quoiqu'il en soit, il n'y a pas de méthode unique pour tous les navigateurs, car ça ne fait partie d'aucune spécification. Il faut donc faire de la détection de navigateur... alors tout ça pour un pauvre pop-up, je suis pas sûr que ça en vaille la peine...


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 31-03-2003 à 16:33:02    

gm_superstar a écrit :

Mmmm dans ma doc de Mozilla, j'avais ceci pour screenX :
 

Citation :

window.screenX : Returns the horizontal location of the mouse in pixels from the left.


 
Je regarde sur la doc en ligne http://www.mozilla.org/docs/dom/do [...] ml#1011624 !
 

Citation :

window.screenX : Returns the horizontal distance of the left border of the user's browser from the left side of the screen.


 
On dirait qu'ils savent pas bien ce qu'ils veulent...
 
 
Enfin bref, quoiqu'il en soit, il n'y a pas de méthode unique pour tous les navigateurs, car ça ne fait partie d'aucune spécification. Il faut donc faire de la détection de navigateur... alors tout ça pour un pauvre pop-up, je suis pas sûr que ça en vaille la peine...


 
C'est clair. En même temps, je peux me faire mon propre script que je réutiliserai à chaque fois. Je crois que je vais le faire tiens... :D  
 
Tant qu'on y est, personne aurait sous la main un lien sur un topo pour la détection des navs ? Jusqu'à présent, je me contentais de détecter ou non la présence d'IE. (cf : mon dernier script pour mon forum).
 :)

Reply

Marsh Posté le 31-03-2003 à 17:00:00    

En PHP :

Code :
  1. function navigateur() {
  2. if (eregi('msie', $_SERVER["HTTP_USER_AGENT"]) && !eregi('opera', $_SERVER["HTTP_USER_AGENT"]))
  3. {
  4. // Internet Explorer
  5. $navigateur="Internet Explorer";
  6. }
  7. elseif (eregi('opera', $_SERVER["HTTP_USER_AGENT"]))
  8. {
  9. // Opera
  10. $navigateur="Opera";
  11. }
  12. elseif (eregi('mozilla/4.', $_SERVER["HTTP_USER_AGENT"]))
  13. {
  14. // Netscape 4.x
  15. $navigateur="Netscape 4.x";
  16. }
  17. elseif (eregi('mozilla/5.0', $_SERVER["HTTP_USER_AGENT"]) && !eregi('Konqueror', $_SERVER["HTTP_USER_AGENT"]))
  18. {
  19. // Netscape 6
  20. $navigateur="Netscape 6.x";
  21. }
  22. else
  23. {
  24. // Autres navigateurs
  25. $navigateur="Navigateur inconnu";
  26. }
  27. return $navigateur;
  28. }


 
vieille fonction que j'avais codé et que j'utilise encore aujourd'hui :D


Message édité par skylight le 31-03-2003 à 17:02:37
Reply

Marsh Posté le 31-03-2003 à 17:08:47    

Skylight a écrit :

En PHP :

Code :
  1. function navigateur() {
  2. if (eregi('msie', $_SERVER["HTTP_USER_AGENT"]) && !eregi('opera', $_SERVER["HTTP_USER_AGENT"]))
  3. {
  4. // Internet Explorer
  5. $navigateur="Internet Explorer";
  6. }
  7. elseif (eregi('opera', $_SERVER["HTTP_USER_AGENT"]))
  8. {
  9. // Opera
  10. $navigateur="Opera";
  11. }
  12. elseif (eregi('mozilla/4.', $_SERVER["HTTP_USER_AGENT"]))
  13. {
  14. // Netscape 4.x
  15. $navigateur="Netscape 4.x";
  16. }
  17. elseif (eregi('mozilla/5.0', $_SERVER["HTTP_USER_AGENT"]) && !eregi('Konqueror', $_SERVER["HTTP_USER_AGENT"]))
  18. {
  19. // Netscape 6
  20. $navigateur="Netscape 6.x";
  21. }
  22. else
  23. {
  24. // Autres navigateurs
  25. $navigateur="Navigateur inconnu";
  26. }
  27. return $navigateur;
  28. }


 
vieille fonction que j'avais codé et que j'utilise encore aujourd'hui :D


 
Merci  :)  
 
Mais pour une fois, seules les détections JS m'intéressent.  :D

Reply

Marsh Posté le 31-03-2003 à 17:11:40    

Hermes le Messager a écrit :


 
Non, c'est tout con en fait. Je veux réaliser un popup genre copyright avec les outils que j'ai utilisé pour faire le site.  
 
Or pour centrer un popup, par RAPPORT A LA FENETRE EN COURS, il n'y a aucune possibilité. En effet, en utilisant les propriétés habituelles, on arrive à centre le popup en fonction de la taille de l'écran, ce que je ne veux pas.  
 
Pour REELLEMENT centrer un popup par rapport à la fenêtre en cours, il faut connaitre la largeur et la hauteur de la fenetre mais aussi LA POSITION de la fenêtre sur l'écran. Moi par exemple, je suis en 1600 en donc je ne surfe JAMAIS en plein écran. La fenêtre de mon navigateur peut se trouver n'importe où.
 
Oui, je sais, je suis connement perfectionniste  [:totozzz] Mais on ne se refait pas.  [:yaisse2]  


Ha ok !
 
Et un bete layer ne serait-il pas approprié ? bon ok c'est lourd juste pour un message, mais bon, au moins ce sera centré, et pas par rapport à la fenetre (encadrement), mais par rapport au contenu.
 
Mais bon, ca fera ptet moins pro ... et puis c'est lourd kan meme !


---------------
get amaroK plugin
Reply

Marsh Posté le 31-03-2003 à 17:12:34    

Hermes le Messager a écrit :


 
Merci  :)  
 
Mais pour une fois, seules les détections JS m'intéressent.  :D  

Légèrement chiant à ses heures :D

Reply

Marsh Posté le 31-03-2003 à 17:12:55    

Reply

Marsh Posté le 31-03-2003 à 17:20:07    

Merci bien. Je me met au boulot et je vous montres mon script une fois terminé.  :)

Reply

Marsh Posté le 01-04-2003 à 01:48:01    

Voilà mon script :
 
Marche avec IE 5+, Mozilla 1+, Netscape 6+ et Opera 6+
 

Code :
  1. <script type="text/javascript">
  2. var navigateur = navigator.appName.substring(0,3);
  3. var version = navigator.appVersion.substring(0,1);
  4. function popup(page,largeur,hauteur,options)
  5. {
  6. if (navigateur == "Mic" && version > 3)
  7. {
  8.   var left = window.top.screenLeft + (document.body.clientWidth / 2) - (largeur / 2);
  9.   var top = (window.top.screenTop + (document.body.clientHeight / 2) - (hauteur / 2)) - 14;
  10. }
  11. else if (navigateur == "Net" && version > 4)
  12. {
  13.   var left = window.screenX + (window.innerWidth / 2) - (largeur / 2);
  14.   var top = (window.screenY + (window.innerHeight / 2) - (hauteur / 2)) + 100;
  15. }
  16. else
  17. {
  18.   var left = (window.innerWidth / 2) - (largeur / 2);
  19.   var top = (window.innerHeight / 2) - (hauteur / 2);
  20. }
  21. window.open(page,"","top="+top+",left="+left+",width="+largeur+",height="+hauteur+","+options);
  22. }
  23. </script>


 
Bon pompage pour ceux qui veulent...  :D

Reply

Marsh Posté le 01-04-2003 à 08:16:16    

Normalement, le mieux n'est pas de détecter le navigateur, mais les fonctionnalités :
 

Code :
  1. if (window.top.screenLeft) {
  2.    ...
  3. } else if (window.screenX) {
  4.    ...
  5. } else {
  6.    ...
  7. }


 
Comme ça, les navigateurs qui s'identifient comme un autre passent le test correctement et exécutent le bon morceau de code.


Message édité par gm_superstar le 01-04-2003 à 08:16:32

---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 01-04-2003 à 09:00:25    

gm_superstar a écrit :

Normalement, le mieux n'est pas de détecter le navigateur, mais les fonctionnalités :
 

Code :
  1. if (window.top.screenLeft) {
  2.    ...
  3. } else if (window.screenX) {
  4.    ...
  5. } else {
  6.    ...
  7. }


 
Comme ça, les navigateurs qui s'identifient comme un autre passent le test correctement et exécutent le bon morceau de code.


 
J'avais pas pensé à ça.  :)  Tu as raison, je vais modifier ça de ce pas.
 :hello:

Reply

Marsh Posté le 01-04-2003 à 09:12:37    

En fait, c'est un tout petit peu plus compliqué. En effet : screenX est supporté par Opera6 mais mal : Celui-ci renvoie toujours -4.  [:totozzz]  
 
C'est pourquoi il faut faire un mix entre ta proposition et la mienne.
 :D

Reply

Marsh Posté le 01-04-2003 à 09:19:39    

Bon, voilà... Merci à GM.  :)  
 

Code :
  1. <script type="text/javascript">
  2. var navigateur = navigator.appName.substring(0,3);
  3. function popup(page,largeur,hauteur,options)
  4. {
  5. if (window.top.screenLeft && document.body.clientWidth)
  6. {
  7.   var left = window.top.screenLeft + (document.body.clientWidth / 2) - (largeur / 2);
  8.   var top = (window.top.screenTop + (document.body.clientHeight / 2) - (hauteur / 2)) - 14;
  9. }
  10. else if (navigateur == "Ope" )
  11. {
  12.   var left = (window.innerWidth / 2) - (largeur / 2);
  13.   var top = (window.innerHeight / 2) - (hauteur / 2);
  14. }
  15. else if (window.screenX && window.innerWidth)
  16. {
  17.   var left = window.screenX + (window.innerWidth / 2) - (largeur / 2);
  18.   var top = (window.screenY + (window.innerHeight / 2) - (hauteur / 2)) + 100;
  19. }
  20. else
  21. {
  22.   var left = 10;
  23.   var top = 10;
  24. }
  25. window.open(page,"","top="+top+",left="+left+",width="+largeur+",height="+hauteur+","+options);
  26. }
  27. </script>


Message édité par Hermes le Messager le 01-04-2003 à 09:39:37
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed