Liens externes dans Flash : hack de MovieClip
Par -Alexandre LEGOUT aka LAlex- le jeudi, avril 22 2004, 13:17 - AS2 - Lien permanent
Avec l'arrivée des standards dans la conception HTML, les habitudes de navigation des internautes changent peu à peu. Un cas trés spécial est celui de l'attribut target que l'on pouvait auparavant mettre dans un lien pour ouvrir ce même lien dans une nouvelle fenêtre.
Avec la supression de cet attribut au sein des standards XHTML, de nombreux webmasters (moi le premier :P) ont protesté contre le fait qu'ils ne pouvaient pas laisser une fenêtre de leur site ouverte et ainsi ne pouvaient plus controler la manière dont naviguent les internautes sur leur site. Personnellement, depuis que j'adopte autant que possible les standards, je trouve avec le recul que c'est plutôt à l'internaute de choisir ou il veut aller et surtout comment il veut y aller. Tous les navigateurs permettent maintenant d'ouvrir une nouvelle fenêtre en restant appuyé sur la touche SHIFT en même temps que l'on clique sur le lien. Cette habitude bien ancrée, il devient trés désagréable de se trouver confronté à une lien _blank alors qu'on n'en a pas envie ... :\
Afin de reproduire ce comportement dans mes animations Flash, je me sert d'un hack du prototype de MovieClip, normalement proscrit en AS2, mais qui me simplifie grandement la vie.
// On sauvegarde la méthode getURL d'origine
MovieClip.prototype.__getURL = MovieClip.prototype.getURL;
// On écrase getURL
MovieClip.prototype.getURL = function() {
// On travaille sur une copie d'arguments
var param = arguments.concat();
// Si la touche SHIFT est appuyée
// et qu'il ne s'agit pas d'un lien javascript ou asfunction
// on met la cible à '_blank'
if (Key.isDown(Key.SHIFT) && param[0].toLowerCase().indexOf("javascript:") < 0 && param[0].toLowerCase().indexOf("asfunction:") < 0) {
param[1] = "_blank";
}
// On appelle l'ancienne méthode getURL
MovieClip.prototype.__getURL.apply(this,param);
}
Ainsi, je ne spécifie plus la destination de mes liens, et quel que soit le getURL que je fais, il suffit d'appuyer sur SHIFT pour l'ouvrir dans une nouvelle fenêtre. Ce comportement est repris dans le menu des sites MediaBox. ![]()
A ce propos, vous aurez d'ailleurs peut-être remarqué que lors de l'affichage d'un texte HTML dans une zone de texte Flash, en cliquant droit sur un lien, un menu vous proposant d'ouvrir le lien dans une nouvelle fenêtre vous est proposé ! ![]()
Commentaires
Et ben ca c'est une bonne nouvelle
Oui ... je dirai même plus, SHIFT + click sur le champ dynamique (lien html) cela marche aussi pour le "_blank" sans passer par le bouton droit sur le lien

bye
moi quand j'ai appris la nouvelle, j'ai en même lu une explication et différent points de vue
j'ai tout de suite compris pourquoi ils ont enlevé le target, et je trouve ca normal
de meme, aujourd'hui je ne supporte plus le target
d'autant plus qu'avec mozilla, un clic sur la molette et ca ouvre le lien dans un nouvel onglet
donc que demande le peuple ? a part d'avoir le choix
Toujours laissé l'accés à des gens qui connaissent un peu moins leur OS que nous et qui restent encore sur l'ergonomie d'un changement de page en 1 click
La possibilité aussi de laisser le choix au développeur si il a besoin (on mettra cela sur le compte de la créativité) du target pour quelquechose de particulier.
bye
Si l'internaute doit voir les deux pages en même temps ... mets le contenu sur une seule page !

S'il n'a pas besoin de voir les deux ,pas besoin d'une nouvelle fenêtre !
oui là dessus, toi et moi on est ok... mais sur certains site expérimentaux on a souvant vu des ouvertures de fenêtres intéressant, alors reste les popups c'est certain
mais je demeure certain qu'une coupure aussi net du target est un peu brusque 
Ben le target est toujours assez chaotique ... autant trouver quelque chose pour les popups (un genre de "certificat de non parasitage" :=)), mais le target n'amenait rien de plus au niveau des sites expérmimentaux ... :\
euh, comment s'y prendre avec les frameset s'il n'y aura plus de target? :\ Je sais que les framesets, c'est pas vraiment chouette, mais ils peuvent être très pratique dans certains cas!
Les frameset ne font plus partie des standards XHTML ...
Et de toutes façons, je trouve ca vraiment lourd les framesets ... :\
++ ^^
pour un petite site web, c'est vrai que c'est lourd.:) Mais dans le cas de l'application sur lequel je travaille en ce moment. J'économise plusieurs giga octet de bande passante par jour et sa reduit d'environ 95% le nombre de requete SQL. Donc en gros c'est plus leger
après vérification, jme suis trompé pour la bande passante
(économie d'environ 100mo), mais pas pour les requete SQL
. Donc sa veut dire qu'il faudra que je recommence sans frame pour être "standard" ?
Adopte !! ^^
Eh oui !
Tu pourras trouver plein d'infos sur le forum Dreamweaver de MediaBox (qui n'a de Dream que le nom :P)
Il existe un standard nommé XHTML 1.0 avec Frameset, mais le 1.1 supprime définitivement les frames !
++ ^^
Oui, très bien ce truc! J'aime bien!
Mais souvent pour un site Flash, je veux forcer le _blank... Puisque si l'usager ne tient pas le shift, il devra faire 'back' et si une fonction d'history n'est pas implantée dans le Flash, l'usager devra se retaper l'intro (s'il y en a une... yeurk) et retrouver la page sur laquelle il était...
Mais pour certains cas, c'est vraiment bien!
Mais moi je tiens le 'control' et non le shift avec Firefox! Shift fonctionne aussi, mais ouvre dans un onglet en arrière plan... je préfère le control.
Salut, c'est vraiment bien cette astuce.
Mais je suis un peu étonné, pourquoi appeler ça un "hack du prototype de MovieClip" ?
radiofalaise > Théoriquement, l'utilisation et la modification des prototypes n'a plus cour ... D'où le terme de hack : une petite astuce ne respectant pas les "conventions" du langage ...
++ ^^
Hellop tout le monde !!!
Je suis tombé un peu par hasard sur ce post, et je viens d'installer mozilla sur mon poste, pour l'adopter
Maintenant, lorsque je veux ouvrir un lien dans une nouvelle fenêtre, le shift ne fonctionne pas (il m'affiche une fenêtre "Save as").
Et vu que je suis sur un portable, je n'ai pas la molette... mais ça correspond au 3ème click, qui est généré par une pression sur les boutons gauche et droite simultanément. Par contre, lors du click simultané, il m'ouvre la page dans une nouvelle fenêtre, pas un nouveau tab... ??
Est-ce que quelqu'un sait comment l'ouvrir dans un tab ??
merci (et merci à Lalex pour son blog et toute les bonnes infos qu'on y trouve)
a+++
comment on fait expliquer qu'est ce que j'utilise?
Fil des commentaires de ce billet