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

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


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

Publié : 25 mars 2005, 16:03
par martin

en résumé : si "focus" alors "focus" ??!!... étrange...
Bien vu

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 :
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 : 
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

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...
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

!!
Publié : 26 mars 2005, 12:17
par martin

merci invité de permettre à Mirovinben de m'en remettre une deuxième couche ...
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
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
