fastclemmy.com

Pour faire suite à un article d'Openweb sur des pop-ups intelligentes et accessibles, j'ai voulu pousser un peu plus loin la logique en déclinant une version "non-intrusive".

"Non-intrusif", derrière ce terme barbare se cache une nouvelle philosophie sous-tendant l'utilisation de javascript. Que celui-ci soit activé ou non chez votre visiteur, votre site doit pouvoir fonctionner : javascript pour l'inutile et non pour l'indispensable. L'exemple d'Openweb le démontre bien : l'utilisation d'une pop-up n'est pas indispensable, elle est possible pour les gens utilisant javascript, mais le lien est simplement cliquable pour tous.

Seulement l'article d'Openweb fait l'impasse sur une autre nouvelle approche que tout bon concepteur web doit intégrer dans ses bonnes pratiques : la séparation contenu/interactivité. Vous êtes sans doute déjà familier avec le concept de la séparation structure/présentation : la structure et le contenu d'un document se trouvent dans le fichier HTML tandis que toutes les informations de présentation sont spécifiées dans la feuille de style. Séparer l'interactivité (gérée par javascript) du contenu revient de la même manière à :

  • mettre toutes les fonctions dans un fichier javascript séparé (*.js)
  • retirer tous les appels à ces fonctions dans le fichier HTML (attributs onmouseover, onclick, etc.)

Reprenons donc l'exemple d'Openweb :

<a href="/img/logo.png" onclick="window.open(this.href, 'exemple', 'height=200, width=400, top=100, left=100, toolbar=no, menubar=yes, location=no, resizable=yes, scrollbars=no, status=no'); return false;">Mon lien</a>

En donnant un id à notre lien, on se donne non seulement la possibilité de le styler avec CSS, mais de le manipuler facilement avec javascript. Notre HTML se résume donc maintenant à :

<a id="monLien" href="/img/logo.png">Mon lien</a>

Pour appeler notre fonction de pop-up, il ne faut pas oublier de rajouter dans la balise <head> de notre document HTML :

<script type="text/javascript" src="outils.js"></script>

Attaquons maintenant la fonction javascript proprement dite que nous enregistrerons dans un fichier "outils.js" :


function zoom() {
	// on récupère l'adresse vers laquelle on pointe dans le lien
	var lienPrecedent = document.getElementById("monLien").href;
	
	// on fixe une taille pour la pop-up
	var largeur = 100;
	var hauteur = 200;
	
	// on fixe les coordonnées pour centrer la pop-up
	var gauche = ( screen.width - largeur ) / 2;
	var haut = ( screen.height - hauteur ) / 2;

	// on ouvre la pop-up avec les bons paramètres
	var urlImage = lienPrecedent;
	var nomFenetre = "zoomModele";
	var options = "left="+gauche+"px,top="+haut+"px,width="+largeur+",height="+hauteur+",toolbar=0,resizable=0";
	window.open(urlImage, nomFenetre, options);
	
	// on empêche le lien de s'ouvrir en double en plus de la pop-up
	return false;
}

function initOnclick() {
	// si la page contient le lien avec l'id "monLien"
	if(document.getElementById("monLien")) {
	
		// on lance la fonction zoom au clic sur l'élément "monLien"
		document.getElementById("monLien").onclick = function () { return zoom();};
	}
}

// on initialise le comportement onclick au chargement de la page
window.onload =	function () {initOnclick()};

Et voilà le résultat ! Bien entendu, l'exemple est ici limité, libre à vous de modifier la fonction pour la rendre plus générique ou plus complète...

#javascript

Vos commentaires

fastclemmy - site -
Un merci à Znarf pour le "return", il comprendra ;-)

Fred Bird - site -
Et vive la semantique...

François - site -
Justement j'allais écrire un commentaire me plaignant du non-crédit ;-)

mauriz - site -
L'utilisation d'un classe "popup" (par exemple) serait bien aussi non? On scanne les liens, on regarde si ce sont des liens "popup" et on leur affecte le comportement si c'est la cas. Ca simplifie les chose s'il y'a plusieurs liens popup dans une même page :)

ElMoustiko - site -
J'avais déjà fait ce système et justement avec l'utilisation des class comme le propose mauriz :
http://www.elmoustikoblog.net/tutoriels/js/lien_extern/
J'ai aussi fait une adaptation qui gère la class popup et la class blank, donc si la class est popup on ouvre une image par exemple dans une nouvelle fenetre aux dimensions de l'image, si la class est blank, on ouvre le lien dans une nouvelle fenêtre à la manière de l'exemple d'openweb mais en extrayant le comportement JavaScript.
Sur cybercodeur, il y a aussi un exemple :
http://www.cybercodeur.net/weblog/commentaires/detailsCarnet.php?idmessage=1088

nima -
Et si on laissait tomber les popup tout simplement ?

ElMoustiko - site -
Bah c'est tout de même interessant dans certains cas ;) Par exemple, tu ouvres une fenêtre popup pour fournir une aide à une action sur la page principale. Pour ouvrir simplement des images d'une galerie on aime ou on aime pas (moi j'aime pas) mais ça peut servir !

Mais dans le fond je suis d'accord, laissons le visiteur choisir !
Mais vu que tout le monde n'est pas d'accord, il peut être interessant de fournir des solutions les plus profitable à tous possible, nan ?

ps > Une petite checkbox "se souvenir des infos" serait appréciable ;)

Nicolas -
Et si t as plusieurs popups sur cette page ?

le id="monlien" est pas ce qu il y a de plus pratique.

et si tu en met plusieurs .... faut gérer ca dans le JS ... Hum pas super pratique.

mais bon l idée est surement à creuser.

Nicolas

Xavier -
C'est bien joli tout ça, mais ceux qui ne veulent pas ouvrir de popups ils font quoi ?

Pourquoi ne pas imaginer une petite checkbox "Ouvrir les liens dans une popup" que le visiteur aurait le loisir de cocher ou non selon ses désirs ? Là on approcherait AMHA sérieusement de la popup idéale : celle désirée et désirable !

Serait-ce si compliqué de laisser le choix au visiteur ?

fastclemmy - site -
@nicolas > Comme je le disais dans mon log, l'exemple donné n'est en effet adapté que dans le cas précis que j'ai rencontré, on peut rendre la fonction plus générique avec un getElementByClassName par exemple...

@xavier > Ceux qui ne veulent pas ouvrir de popups peuvent toujours cliquer avec le bouton du milieu pour ouvrir le lien dans un nouvel onglet que dans une pop-up par exemple. Ce qui n'est souvent pas possible dans les façons de faire les liens vers des pop-ups "à l'ancienne"...

Nicolas -
@clemmy -> no pb j avais bien compris le principe t inquiete :-) c est pour cette raison que je dis que c ets à creuser sans aucun doute. Mais au final - dans l etat actuel des choees - je trouve l implementation de openweb plus pratique et finalement assez voire plus portable.

Je vais y reflechir. Si je trouve plus "mieux" je t en posterai ici mes résultats.

En tout cas merci pour tes reflexions.

Nicolas

find more info - site -
A debt of gratitude is in order for your post. I've been contemplating composing an extremely tantamount post in the course of the last couple of weeks, I'll most likely keep it straightforward and connection to this rather if thats cool. Much obliged.

moralisation - site -
Much obliged to you for some other enlightening online journal. Where else might I be able to understand that kind of data written in such a perfect means? I have a mission that I'm a few seconds ago taking a shot at, and I have been at the post for such data.

Cuban companies contacts - site -
The website is looking bit flashy and it catches the visitors eyes. Design is pretty simple and a good user friendly interface.

www.hotmail.com - site -
Thanks for sharing these useful information! This is really interesting information for me.

google mail - site -
Interesting post! This is really helpful for me. I like it! Thanks for sharing!

animal jam - site -
All the best blogs that is very useful for keeping me share the ideas of the future as well this is really what I was looking for, and I am very happy to come here. Thank you very much

top attractions to Mozambique - site -
Thanks for a wonderful share. Your article has proved your hard work and experience you have got in this field. Brilliant .i love it reading.

kerja sambilan - site -
A debt of gratitude is in order for sharing the information, keep doing awesome... I truly delighted in investigating your site. great asset...

login matawangniaga - site -
well we really like to visit this site, many useful information we can get here
I see the greatest contents on your blog and I extremely love reading them.

buat duit dengan uber - site -
Thanks for the informative and helpful post, obviously in your blog everything is good..

kerja kerajaan - site -
This website and I conceive this internet site is really informative ! Keep on putting up!

https://www.SimplyBestOf.com - site -
Interesting post. I Have Been wondering about this issue, so thanks for posting. Pretty cool post.It 's really very nice and Useful post.Thanks

Mouse service - site -
Thanks for such a great post and the review, I am totally impressed! Keep stuff like this coming.

real money casino - site -
Wonderful blog post. This is absolute magic from you! I have never seen a more wonderful post than this one. You've really made my day today with this. I hope you keep this up!

Driving school - site -
Great post I would like to thank you for the efforts you have made in writing this interesting and knowledgeable article.

plano detox active green - site -
I would like to say that this blog really convinced me to do it! Thanks, very good post.

Hyperthymesia Test - site -
Thanks a lot for one’s intriguing write-up. It’s actually exceptional. Searching ahead for this sort of revisions.

ascension with earth - site -
it was a wonderful chance to visit this kind of site and I am happy to know. thank you so much for giving us a chance to have this opportunity..

startup companies - site -
This post is good enough to make somebody understand this amazing thing, and I’m sure everyone will appreciate this interesting things.

how to help a baby sleep all night - site -
I would like to thank you for the efforts you have made in writing this article. I am hoping the same best work from you in the future as well..

bridesmaid presents - site -
I quite like reading an article that can make people think. Also, thanks for allowing for me to comment!

Maasai Mara National Reserve - site -
Thanks for sharing this useful info..

http://www.abcmoney.co.uk - site -
This is a splendid web journal! I'm exceptionally content with the remarks!..

etosha game reserve - site -
Most of the time I don’t make comments on websites, but I'd like to say that this article really forced me to do so. Really nice post!

Car Door Magnets - site -
This is a splendid web journal! I'm exceptionally content with the remarks!..

career guidance - site -
You know your projects stand out of the herd. There is something special about them. It seems to me all of them are really brilliant!

how to build an egg incubator - site -
Thanks for referring to this publish, Keep improving such problems

click resources - site -

What a helpful blog post. You have done so much research, very impressive. I am really happy to hope to keep in touch with you..

female libido supplements - site -
I recommended this cost-effective abilities outstanding on the world web page

bridesmaid gifts - site -
I recognized so a wide range of efficient aspects in your web page

happy wheels - site -
What a great initiative here. I'll look around the site and see if I can offer any additional ideas. Thanks.

hotmail login - site -
This is great, That's a great website, it really is what I was looking for, thank you for sharing!

Shakeology reviews - site -
This post is really inspirational read, truth been told in your post.

what can cause hair loss in men - site -
This was the perfect resource I've been hunting down. This article was shaped impeccably; I was dumbfounded with your understanding.

Bangalore Escorts - site -
Interesting post! This is really helpful for me. I like it! Thanks for sharing!

Bangalore Escorts Services - site -
Great! Thanks for sharing the information. That is very helpful for increasing my knowledge in this field

Shakeology Greenberry - site -
Bless you for sharing this amazing and informative article. This article is so useful for us to do better in our lives!

Houston Projector Rental - site -
Always so interesting to visit your site.What a great info, thank you for sharing. this will help me so much in my learning

prosun - site -
I have read your excellent post. This is a great job. I have enjoyed reading your post first time. I want to say thanks for this post. Thank you...

belajar buat blog - site -
I will be interested in more similar topics. i see you got really very useful topics , i will be always checking your blog thanks

buat duit online - site -
Superbly written article, if only all bloggers offered the same content as you, the internet would be a far better place..

Max - site -
Thanks for the informative and helpful post.

How to Find Escorts in Bangalore - site -
Thanks for sharing the information. That is very helpful for increasing my knowledge in this field.

xtend life green lipped mussel powder - site -
Incredibly awesome post this author make and wonderful site awesome profession

Bangalore Escorts service - site -
I visit your website it is really good here is amazing post good information for us it is really good thanks for sharing and keep it up.

Lucas - site -
I intend to visit your website daily because of your powerful articles.

Madeline - site -
I would love to hear more about this. As always your posts were stunning.

abcya - site -
Surely there will be more people waiting to read your next article. Wish you more and more writing every day.

hotmail sign up - site -
The article you have shared here very good. This is really interesting information for me. Thanks for sharing!

gmail sign up - site -
This is really interesting information for me. Thanks for sharing!

Call Girls in Bangalore - site -
You’ve written nice post, I am gonna bookmark this page, thanks for info. I actually appreciate your own position and I will be sure to come back here

best brain supplements - site -
Very interesting view and excellent information... I'm learning so much new and valuable information from your post. Thank you!

Ajouter votre commentaire