un p'tit gadget pour creer des popups avec paramètre(s)

Eléphant du PHP | 287 Messages

22 août 2005, 18:21

/**
 * Sert a creer une instruction javascript pour afficher un popup avec passage de 0 à n parametres via l'url
 *
 */
class Popup
{
	/**
	 * Popup avec 0 ou 1 parametre
	 *
	 * @param string $page
	 * @param int $width
	 * @param int $height
	 * @param string[facultatif] $nomparam
	 * @param mixed[facultatif] $param
	 * @return string
	 */
	public static function pp($page,$width,$height,$nomparam=null,$param=null)
	{
		$code="window.open('".$page."?".$nomparam."=".$param."','', 'width=".$width.",height=".$height.",left=' + ((screen.width -".$width.")/2) + ',top=' + ((screen.height - ".$height.")/3) );";
		return $code;
	}
	
	/**
	 * Popup avec n parametres
	 *
	 * @param string $page
	 * @param int $width
	 * @param int $height
	 * @param tableau_2D $param
	 * @return string
	 */
	public static function multi_pp($page,$width,$height,$param)
	{
		$code="window.open('".$page."?";
		
		$code.=$param[0][0]."=".$param[0][1];
		$nb_param=count($param);
		for($i=1;$i<$nb_param;$i++) $code.="&".$param[$i][0]."=".$param[$i][1];
		
		$code.="','', 'width=".$width.",height=".$height.",left=' + ((screen.width -".$width.")/2) + ',top=' + ((screen.height - ".$height.")/3) );";
		return $code;
	}
}
exemple:
<?php
$param=array(array('toto','param_un'),array('tutu','param_deux'),array('titi','param_trois'));
?>
<input type="button" value="kjhkh" onClick="javascript:<?php echo Popup::pp('tata.php',400,300,'tutu','param'); ?>">
<br>
<input type="button" value="kjhkjh" onClick="javascript:<?php echo Popup::multi_pp('tata.php',400,300,$param); ?>">
donc plus qu'à récupérer les paramètres avec $_GET.
accessoirement le popup sera centré horizontalement(propriété 'left') et aux 2/3 en partant du bas (propriété 'top').

pour php4 il suffit d'enlever le 'public static' lors des déclarations de méthode.

Eléphanteau du PHP | 17 Messages

29 août 2005, 20:49

Les pop-up, c'est mal.

Mammouth du PHP | 19672 Messages

29 août 2005, 20:56

Les pop-up, c'est mal.
Ça dépend comment c'est utilisé: dans certains cas, ça peut être extrêmement pratique pour les formulaires par exemple. Mais c'est vrai que si c'est pour de la publicité, c'est pas terrible.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 17 Messages

29 août 2005, 21:03

Ça dépend comment c'est utilisé: dans certains cas, ça peut être extrêmement pratique pour les formulaires par exemple. Mais c'est vrai que si c'est pour de la publicité, c'est pas terrible.
Dans tout les cas, ça demande javascript, ce qui restreint l'accès à 89% des internautes ...

Et même moi qui ais javascript d'activé, je n'aurrais pas accès à ta pop-up contenant ce malheureux formulaire.

Les pop-up, c'est mal.

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

29 août 2005, 22:24

Ça dépend comment c'est utilisé: dans certains cas, ça peut être extrêmement pratique pour les formulaires par exemple. Mais c'est vrai que si c'est pour de la publicité, c'est pas terrible.
Dans tout les cas, ça demande javascript, ce qui restreint l'accès à 89% des internautes ...
Javascript est désactivé dans 3% des navigateurs. Ceci incluant les Robots, et les navigateurs en mode texte, ainsi que les "wget" & cie.
On peut considérer que la part de visiteurs "réels" ayant javascript désactivée est encore plus infime que le nombre de visiteurs utilisant Amaya. Ce genre d'arguments n'est pas vraiment valable, surtout en avançant des chiffres aussi absurdes ;)
http://www.phpfrance.com/forums/voir_sujet-5480.php

Le JavaScript est un excellent moyen d'ajouter du dynamisme à une page, d'alléger l'interface, d'apporter des éléments parfois carrément utiles. Mais il ne doit jamais être indispensable.

Je ne dirai pas simplement (et de façon un peu manichéenne) "les popup saylemal" mais plutot qu'avec le nombre de popup-blockers aujourd'hui, et en comptant en prime celui de base avec IE 6 sur XP SP2 (donc une grosse part d'internautes - hélas), un popup non désiré (et parfois même, un popup tout court) a très très peu de chance d'apparaître.

J'ai un tas de clients qui persistent à vouloir faire apparaître leur "news du jour vachement importante" (genre dates du prochain salon) en popup... J'ai beau leur expliquer que personne ne les verra leurs popup, ils n'ont pas encore compris :)

Mammouth du PHP | 1885 Messages

29 août 2005, 22:26

Bonjour,

Une méthode qui semble fonctionner et de mettre le popup sur l'évènement onclick(). Le visiteur arrive sur la page, regarde un peu et dès qu'il clique sur un lien ou dans le vide, le popup apparait et ne semble pas bloqué. www.sitepoint.com utilise d'ailleurs cette méthode relativement intéressante.
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

29 août 2005, 22:42

Ah oui j'y pense : une méthode pour le popup "accessible".

Code : Tout sélectionner

<a href="http://monsite.com/mapage.html" onclick="window.open(this.href,'_blank','width=400,height=300');return false;">LIEN</a>
Ce type de code permet:
- à l'utilisateur ayant JS désactivé de toujours accéder à la page de manière "classique"
- à l'utilisateur ne voulant pas (ou ne pouvant pas) ouvrir de popup d'utiliser le menu contextuel (ou le clic du milieu pour ouvrir un onglet) pour l'ouvrir de la manière qu'il le souhaite.
- à l'utilisateur moyen d'ouvrir une popup en cliquant sur le lien (comportement attendu).
- de ne pas avoir à utiliser target="_blank" si on veut absolument une page valide XHTML strict.

Eléphanteau du PHP | 17 Messages

29 août 2005, 23:03

Javascript est désactivé dans 3% des navigateurs. Ceci incluant les Robots, et les navigateurs en mode texte, ainsi que les "wget" & cie.
Je le sais de plus en plus désactivé ne serrait-ce que dans mon entourage .. . Et il y a beaucoups plus de pc n'acceptant pas les pop-up que de pc ayant désactivé totalement javascript ...
surtout en avançant des chiffres aussi absurdes ;)
http://www.w3schools.com/browsers/browsers_stats.asp, ma source ...

Mais il ne doit jamais être indispensable.
Si un contenu n'est accessible que par une pop-up, javascript est indispensable...

Eléphant du PHP | 287 Messages

30 août 2005, 00:19

Dans tout les cas, ça demande javascript, ce qui restreint l'accès à 89% des internautes ...
Et même moi qui ais javascript d'activé, je n'aurrais pas accès à ta pop-up contenant ce malheureux formulaire.
Les pop-up, c'est mal.
j'ai aussi l'impression que tu restreint php à la partie client.
si tu fais un site en php il y a des chances que tu fasses aussi une partie admin.
de même tu peux aussi utiliser php pour réaliser un intranet.

donc pour ce qui est partie admin et intranet tu peux te lacher un peu plus niveau javascript(à moins que personne veux utiliser ce que tu as fait), ce qui à mon sens n'est pas un mal non plus.

autre chose, javascript est activé par défaut, donc celui qui le désactive sait ce qu'il fait(s'il n'était pas activé par défaut je pense que le taux dont tu parles pourrait être atteint).

sinon j'utilise les popups pour afficher des images, envoyer un mail, faire des conversions...
...le tout à la demande de l'utilisateur(dans le sens où il faut qu'il click pour l'afficher, donc le popup ne se fera pas bloquer).

Eléphanteau du PHP | 17 Messages

30 août 2005, 01:58

Oui, sauf que l'astuce de la pop-up au click de l'utilisateur sur un lien ... elle est vielle, et tout bon anti pop-up la connais...

Après si tu l'utilises dans un raiseaux où tu es sur qu'elles passerront tes pop-ups ... ne te prives pas.

Eléphant du PHP | 287 Messages

30 août 2005, 12:47

Oui, sauf que l'astuce de la pop-up au click de l'utilisateur sur un lien ... elle est vielle, et tout bon anti pop-up la connais...
pour info un nouveau anti-popup est sur le point de voir le jour.
il interdira l'autorisation des popups pour un site en particulier, parceque l'astuce est vieille et qu'on ne la fait pas aux développeurs d'anti popup.

plus sérieusement, à mon sens un anti popup est là pour empêcher l'affichage non désiré de popup lors du chargement d'une page web.
c'est pourquoi des développeurs naïfs ont cru bon de laisser la possibilité aux utilisateurs de pouvoir clicker sur un lien ou un bouton dans le but d'ouvrir ce fameux popup(je parle évidemment des dernières versions d'ie avec sp2 et tout le tralala, ainsi que de firefox...c'est à dire ce qui équipe la majorité des ordinateurs).

donc ce que tu appel une fonctionnalité(bon anti popup), j'appel ça un défaut conception dans le sens où il restreint les possibilités de choix de l'utilisateur.
d'après ton lien, pour ce qui est de l'année 2005 il aparait qu'entre 90 et 89% des navigateurs utilisent javascript.

au cas où tu serais de bonne foie(après tout on ne se connait pas):
javascript on -> javascript activé
javascript off->javascript désactivé

Après si tu l'utilises dans un raiseaux où tu es sur qu'elles passerront tes pop-ups ... ne te prives pas.
c'est gentil à toi.
note tout de même que je ne m'en prive pas non plus pour la partie admin d'un site web, ainsi que pour la partie client tant que ça reste une fonctionnalité secondaire.

donc tout ça pour dire que si tu viens sur mon topic qui a pour sujet l'utilisation d'un popup pour dire que les pop-up, c'est mal, après tout pourquoi pas.
par contre essai de ne pas donner des arguments en bois qui se base sur une mauvaise compréhension de la langue anglaise, ou bien des généralités sur ce qui représentent en fait un infime pourcentage de ce qui existe réellement.

après tu n'est peut-être qu'un petit troll des bois en ballade :lol:

Mammouth du PHP | 19672 Messages

30 août 2005, 13:01

...(bon anti popup), j'appel ça un défaut conception dans le sens où il restreint les possibilités de choix de l'utilisateur...
Désolé de te contredire, mais tu offres quoi comme choix à l'utilisateur en lui imposant un pop-up.

Indépendament des clients utilisés pour naviguer, il reste une chose certaine: les pop-ups agacent les internautes. Les 3/4 du temps, c'est de la publicité et ça énerve. C'est la raison majeure du développement d'outils pour les bloquer, restreignant de ce fait l'utilisation intelligente des pop-ups. Il est donc préférable d'éviter de les utiliser pour une simple question de bon sens. Que ce soit bien ou mal est un autre débat, c'est un constat de fait.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 287 Messages

30 août 2005, 13:12

...(bon anti popup), j'appel ça un défaut conception dans le sens où il restreint les possibilités de choix de l'utilisateur...
Désolé de te contredire, mais tu offres quoi comme choix à l'utilisateur en lui imposant un pop-up.
j'ai du mal m'expliquer.

je parle en fait de deux choses:
.les popups qui s'affichent au chargement de la page(là je te rejoint sur la suite de ton post)
.les popups qui s'affichent à la demande de l'utilisateur(ce que j'utilse)

quand je parle de défaut de conception je parle d'empêcher le deuxième point.
donc je n'impose rien du tout à l'utilisateur, s'il veut clicker le popup apparait, sinon il n'apparait pas.
t'es pas de mon avis?

Mammouth du PHP | 19672 Messages

30 août 2005, 13:26

Toi, tu fais la distinction, je la fais aussi, donc sur ce point, je suis d'accord, mais l'internaute lambda ne fait pas nécessairement cette nuance trop subtile: pour lui, un pop-up reste un pop-up et ça l'énerve. C'est donc sur cette base que je vais développer en évitant le pop-up tout simplement ou alors, je vais m'arranger pour avertir l'internaute par une mention explicite du genre ("Ouvre une fenêtre") par exemple. S'il utilise un navigateur actuel, il saura à quoi s'en tenir et sera beaucoup plus enclin à laisser s'ouvrir la petite fenêtre si ça fait partie de la solution qu'il cherche sur Internet dans ce site.

Si tu préfères, en développement, j'essaye d'abord et avant tout de me mettre à la place de l'internaute en imaginant le pire, donc je fais en sorte pour que dans le pire des cas il soit satisfait. S'il est satisfait, il reviendra et éventuellement recommandera mon site, sinon, il est perdu pour moi.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 287 Messages

30 août 2005, 13:49

d'accord je comprend ton point de vue.

je te donne quand même un exemple du pourquoi j'ai été ammené à créer cette classe.
elle fait partie d'un ensemble de classe qui permet de créer une liste avec plusieurs types de boutons associés à chaques lignes.
une liste affiche les clients inscrits sur le site et pour chaque client il y a la posibilité d'envoyer un mail.
dans ce cas l'utilisateur click sur un bouton, un popup apparait et il n'a plus qu'à écrire et envoyer le mail.
à ce moment le mail est envoyer, le popup se ferme et l'utilisateur reste sur la page qui affiche la liste pour qu'il puisse continuer à s'occuper de ses client sans avoir à faire de retour.

je pense donc que ça facilite la vie de l'utilisateur.
d'un autre côté je n'ai jamais pensé que les utilisateurs pouvaient être allergiques aux popups(en fait je n'ai jamais eu de retour dans ce sens), qu'ils soient fonctionnels ou non.
donc je me renseignerais un peu plus histoire de savoir si c'est le cas ou non.