Behaviour: Using CSS selectors to apply Javascript behaviour

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

13 févr. 2006, 14:16

Je n'écris qu'assez rarement du Javascript --ou même du CSS-- mais récemment j'ai dû en faire un tout petit peu pour mes besoins personnels, et durant mes recherches je suis tombé sur ça: Behaviour : Using CSS selectors to apply Javascript behaviours

Je ne sais pas si pour vous c'est déjà old news, mais si comme moi vous ne connaissiez pas alors je suis sûr que vous adorerez :D

Pour résumer, Behaviour se propose de remplacer ces vilains bouts de javascript qui semble rentrés de force dans nos jolis tags HTML (comme une valise pleine qu'on arrive plus à fermer) par de simples attributs de classe ou ID. Un exemple, consistant à créer un lien s'ouvrant dans une nouvelle fenêtre:
Someone open a window

<a href="javascript:window.open('page.html')">my page</a>
Awful!

<a href="#" onclick="window.open('page.html')">my page</a>
Bad!

<a href="page.html" onclick="window.open(this.href)">my page</a>
Better

<a href="page.html" class="popup">my page</a>
Best!

Code : Tout sélectionner

function doPopups() { if (!document.getElementsByTagName) return false; var links = document.getElementsByTagName("a"); for (var i=0; i < links.length; i++) { if (links[i].className.match("popup")) { links[i].onclick = function() { window.open(this.href); return false; } } } } window.onload = doPopups;
Edit: corrigé le titre trop long
Modifié en dernier par Hubert Roksor le 13 févr. 2006, 17:18, modifié 1 fois.

ViPHP
fab
ViPHP | 2657 Messages

13 févr. 2006, 14:31

simpa =)
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

13 févr. 2006, 21:39

J'avais développé un peu autour de ce principe il y a quelques mois. J'en avais parlé sur le forum privé, voici le topic déplacé sur le forum JS :
http://www.phpfrance.com/forums/voir_sujet-6999.php

Vous verrez combien certains concepts sont difficiles à faire entrer dans l'esprit de gens pourtant au fait des standards :langue:
Vous y verrez également combien j'ai tendance à commencer un truc pour ne jamais le finir :evil: :evil: :evil: :evil:

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

13 févr. 2006, 22:22

Sur le... forum privé ?

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

14 févr. 2006, 00:14

Sur le... forum privé ?
ça n'est pas l'objet du topic :langue: c'était juste pour préciser que ce thread ne sortait pas de nulle part d'un coup comme ça ;)