Strumming my pain with his frame
Singing my life with wordpress
Killing me softly with his script
Killing me softly… with his script
Telling my whole life with wordpress
Killing me softly… with his script…
Avant, lorsqu’on voulait supprimer les frame indésirables, on utilisait des script comme :
<script type="text/javascript"><!-- if (top != self) top.location.href = location.href; // --></script>
Mais avec la prolifération des services web 2.0 comme Wikio, Blogasty ou encore Netvibes qui proposent aux visiteurs de prendre connaissance de votre prose pour voter ou s’abonner à votre flux RSS, ces scripts anti-frame sont trop radicaux.
A la place, Aymeric Jacquet d’AJBlog nous a concocté ce script très élégant basé sur la bibliothèque jQuery :
<script type="text/javascript"> if (top != self) { $(document).ready(function () { $("a").attr("target", "_top"); }); } </script>
Avec ce script vous permettez à votre blog de se débarrasser des frame qui l’entoure une fois que l’internaute a cliqué sur un lien de votre page et pas avant. Attention toutefois, aux erreurs d’interprêtation. Prudence, donc…
J’aime beaucoup ta façon élégante de parler du sus-cité commentaire comme si ça avait une critique constructive pour inviter à la méfiance d’utiliser ce genre de script… alors qu’à la lecture on se rend compte que ce n’est pas beaucoup plus qu’une réaction à chaud agacée (et totalement injustifiée/inutile) :p
Pour ma part, j’aime bien ce procédé, donc merci bien ! J’ai vaguement réfléchi à ça il y a pas plus de quelques jours (sur mon canapé, sans pc donc j’avais pas testé et totalement oublié après :p)… ça tombe bien !
Un attribut « target » ? jamais de la vie mon bon monsieur.
héhé pas mal, mais bon à utiliser avec grande prudence, car par exemple dans les résultats de google image, on voit d’abord l’image dans une frame me semble t-il ?
Grumpf :
Que fait le script :
1. En gros, il détecte si la page se trouve affichée dans une frame if (top != self)
2. Si une frame est détectée rajoute automatiquement à tous vos liens l’attribut target= »_top » qui, en gros, replace la page ouverte via le lien en pleine page $(« a »).attr(« target », « _top »);.
Si votre site n’est pas affiché dans une frame, le script ne se déclenche pas, donc le target=_top n’est effectif que dans le cas d’affichage dans une frame.
Si pas de frame, pas de target, si frame, le site s’affiche bien dans la frame mais la quitte au premier clic sur un lien. Cela n’affecte donc pas l’affichage classique de la page initiale dans blogasty, netvibes, wikio, google image mais il permet de reprendre le contrôle dés qu’un visiteur commence à visiter votre site.
@kynerion effectivement l’attribut est déprécié mais vu qu’il n’est injecté que dans un seul et unique type de cas de figure où ton site est affiché dans un frame, je vois pas ce qu’il y a de « choquant » là-dedans… Surtout que le reste du temps ton site restera 100% valide (s’il l’est déjà à la base)…
@Aymeric ouaip et j’applaudis des deux mains pour cette ingénieuse idée : tout simple mais redoutablement efficace ! Plus qu’à en faire un plugin jQuery 😉
@Kynerion > Je suis d’accord avec burninHat : il faut voir ça comme une CSS dans un commentaire conditionnel pour IE où je n’hésite pas à mettre des hacks pour distinguer ie6 de ie7, histoire d’économiser une requête. Là, comme nous l’explique Aymeric, son script n’a aucun effet dans la majorité des cas.
Burninghat : ahhh enfin quelqu’un qui comprendrs l’élégance du script. 😉
En faire un plugin jQuery… euhhh… Il y a des gens compétents en jQuery dans la salle ? 😉
@Aymeric > je viens de me relire et je m’aperçoit que j’ai oublier de terminer une phrase. Je te rassures, j’avais bien compris l’utilité et l’intérêt du script 😉
Je vais voir comment je peux corriger ça sans réécrire le billet ^^
Edit : du coup, j’ai réécrit une partie du billet qui reflète mieux ma pensée (et mon intelligence, aussi 😉 )
Ca me semble nickel comme ça. Là faut vraiment le vouloir pour pas comprendre.
De rien Aymeric, c’est sincère 😉
Quand à en faire un plugin jQuery, ouaip ça doit pas être bien méchant… Faudra que je mette ça sur ma todo list (surtout que c’est sûrement pas bien méchant ET pas forcément bien utile vu la « longueur » du script :p)
Par contre ne sous-estime pas la capacité à ne pas comprendre de ceux qui ne veulent vraiment pas comprendre… Certains ont des ressources illimités à ce niveau-là (mais j’avoue, Bruno, là ton billet est nettement plus clair !)
Pour ma part, j’aime bien ce procédé, donc merci bien ! J’ai vaguement réfléchi à ça il y a pas plus de quelques jours (sur mon canapé, sans pc donc j’avais pas testé et totalement oublié après :p)… ça tombe bien !