Page 1 sur 2

[Aide] Erreur de javascript ...

Publié : 24 mars 2005, 23:33
par GregK84
Salut,

J'ai écris une fonction javascript pour ouvrir et centrer une popup au milieu de l'écran.
Cette fonction fonctionne sur Mozilla, Firefox, Netscape, Opera ... sauf sur Internet Explorer.
Malheureusement, je ne trouve pas l'erreur ...

Code : Tout sélectionner

function js_fct_miniature(id) {
	w = 540; // Largeur
	h = 380; // Hauteur
	var path = 'index.php?fuseaction=gallery.popup&id=' + id; // URL du fichier
	var win = window.open(path, 'Texte de la nouvelle', 'toolbars=no,scrollbars=yes,width=' + w + ',height=' + h + ',resizable=no'); // paramettre de la popup
	win.focus(); // on donne le focus
	var posX = (window.screen.width/2) - (w/2); // on détermine la largeur
	var posY = (window.screen.height/2) - (h/2); // on détermine la hauteur
	win.moveTo(posX,posY); // on affiche la fenêtre
}
et on appelle la fonction de cette façon :

Code : Tout sélectionner

<a href="javascript:js_fct_miniature('<?php print($id); ?>')">Mon image</a>

Publié : 25 mars 2005, 02:03
par martin
essaie un truc du genre (j'ai pas testé) :

Code : Tout sélectionner

function js_fct_miniature(id) {
   var w = 540; // Largeur
   var h = 380; // Hauteur
   var path = 'index.php?fuseaction=gallery.popup&id=' + id; // URL du fichier
   var posX = (window.screen.width/2) - (w/2); // on détermine la largeur
   var posY = (window.screen.height/2) - (h/2); // on détermine la hauteur
   var win = window.open(path, 'Texte de la nouvelle', 'width=' + w + ',height=' + h + ',top='+posY+',left='+posX+',toolbars=no,scrollbars=yes,resizable=no'); // parametre de la popup
   if (win.window.focus){win.window.focus();}; // on donne le focus
} 

Publié : 25 mars 2005, 13:04
par GregK84
ton code fonctionne sur tout les navigateurs, mais j'ai le meme probleme avec internet explorer.

il me marque que cette ligne pose probleme. si je l'efface, il me refait une erreur a la meme ligne, mais il s'agit du '}' qui pose probleme.

l'erreur c'est un argument non valide
martin a écrit :essaie un truc du genre (j'ai pas testé) :

Code : Tout sélectionner

   if (win.window.focus){win.window.focus();}; // on donne le focus
} 

Publié : 25 mars 2005, 14:58
par Mirovinben
:shock: en résumé : si "focus" alors "focus" ??!!... étrange...

ma proposition :

Code : Tout sélectionner

iHtr = hauteur de ta fenêtre popup
iLrg = largeur de ta fenêtre popup
iNom = nom de ta fenêtre
Htm = contenu de ta page à mettre dans le popup

function Wopen(Htm){
  var iTop=((screen.height-iHtr)/2);
  var iGch=(screen.width-iLrg)/2;
  var fen=window.open(Htm,iNom,'top='+iTop+',left='+iGch+',width='+iLrg+',height='+iHtr);
  fen.focus();
}

Rien ne t'emêche d'ajouter d'autres paramètres (resize, status)...
sinon je t'invite à aller faire un tour ici où tu trouveras un certain nombre de routines que j'ai écrites (complètement ou adaptées)... et elles fonctionnent sous IE comme sous FF...

Publié : 25 mars 2005, 15:07
par GregK84
merci je vais essaye ca

Publié : 25 mars 2005, 15:15
par GregK84
ca ne fonctionne tjr pas :(

Publié : 25 mars 2005, 15:25
par Mirovinben
GregK84 a écrit :ca ne fonctionne tjr pas :(
:shock: Etrange... c'est qu'il y autre chose qui bloque car ma proposition est extraite de mes librairies... et je les utilise dans mes différents sites perso depuis pas mal de temps...

Tu peux tester sur ce site perso (le WWW en bas de mes posts) (clique sur une photo en vignette dans un de mes albums-photo et tu ouvres en popup centré la photo en 600x450) Il n'est pas très à jour because l'hiver ne m'a pas inspiré mais tu peux y faire un tour quand même :wink:

Publié : 25 mars 2005, 16:03
par martin
:shock: en résumé : si "focus" alors "focus" ??!!... étrange...
Bien vu :oops: win.window.focus(); suffit amplement...

Bon au pif toujours, est ce tu utilises IE6 sp2 avec son anti popup intégré (que je n'ai pas) ? Peut être a t'il des réglages que je ne connais pas et qui bloque le(s) scripts.

Publié : 25 mars 2005, 18:16
par GregK84
je tourne avec ie 6 sp2 (sans l'antispyware)

cela ne fonctionne tjr pas :(
vous voulez que je face une capture d'écran du message d'erreur ?

Publié : 25 mars 2005, 18:35
par martin
je tourne avec ie 6 sp2
Et si tu désactives le bloqueur de popup intégré ?

Publié : 25 mars 2005, 18:50
par GregK84
je viens essaye et cela ne marche pas non plus :(

Voici le message d'erreur :

Image

Et la fonction est sur la ligne 1 :

Code : Tout sélectionner

function js_fct_miniature(id) {
   var w = 540;
   var h = 380;
   var path = 'index.php?fuseaction=gallery.popup&id=' + id;
   var posX = (window.screen.width/2) - (w/2);
   var posY = (window.screen.height/2) - (h/2);
   var win = window.open(path, 'Texte de la nouvelle', 'width=' + w + ',height=' + h + ',top='+posY+',left='+posX+',toolbars=no,scrollbars=yes,resizable=no');
   win.window.focus();
}

Publié : 25 mars 2005, 23:48
par Invité
martin a écrit :

Code : Tout sélectionner

 if (win.window.focus){win.window.focus();}; // on donne le focus
Mirovinben a écrit : :shock: en résumé : si "focus" alors "focus" ??!!... étrange...
pour ton info, Mirovinden ce genre de test (if (win.window.focus)) est sensé soit retourner vrai si la fonction existe et donc dans cet exemple l'appeler; soit retourner faux si elle n'existe pas... (forcement)

Un peu comme faire de la détection de browser à l'aide de
if (document.all) et if (document.getElementById)
méthode efficace mais non préconisée :roll:

Publié : 26 mars 2005, 06:42
par Mirovinben
Anonymous a écrit :pour ton info, Mirovinden ce genre de test (if (win.window.focus)) est sensé soit retourner vrai si la fonction existe et donc dans cet exemple l'appeler; soit retourner faux si elle n'existe pas... (forcement)
Voui, chui au courant ! sauf que s'il faut tester l'existence de chaque fonction avant de l'exécuter on n'a pas fini... :wink:

Pour info
-1- windows.focus est supporté depuis Javascript 1.1, Netscape 3 et Internet Explorer 4...
-2- le bout de code qui m'interpelle veut exactement dire ceci : si la fenêtre a le focus, on lui donne le focus... étonnant non ? Et si la fenêtre ne l'a pas... on ne lui donne pas !... épatant comme test :D !!

Publié : 26 mars 2005, 12:17
par martin
:oops: :oops: merci invité de permettre à Mirovinben de m'en remettre une deuxième couche ... :lol:

Bon, il était tard quand j'ai proposé ce bout de code (c'est moyen comme excuse, mais j'en trouve pas d'autre pour l'instant)

Publié : 26 mars 2005, 14:14
par Invité
Ceci

Code : Tout sélectionner

if (window.focus) {...}
ne retourne pas l'état du focus de la fenêtre mais l'état de l'implémentation de la fct dans le browser !!!

nan :?: