Sol@rweb WeBlog

vendredi 12 mai 2006

Externalisation totale du javascript

Une petite astuce que j'ai découverte récemment et testée pour trouver la meilleure utilisation. Le but est donc de ne plus avoir de gestion d'événements (onload, onlick...) dans le code xHTML mais que tout soit géré dans le javascript.

On va d'abord définir une fonction quelconque en javascript que l'on va essayer d'appeler avec l'événement interne, puis en externe :

function tell(personne, objet_creux_feminin_singulier)
{
	alert(personne+" rentre dans sa "+objet_creux_feminin_singulier);	
}

Voici la manière classique d'appeler cette fonction avec l'événement onclick dans un document xHTML :

<a href="#" onclick="tell('toto', 'maison')">Interne</a>

Maintenant le but est d'appeler cette fonction sans l'événement, on va donc ajouter un id à l'élément "a" mais on aurait pu essayer de le retrouver avec getElementsByTagName() (ce qui serait plus difficile dans une page avec x liens).

<a href="#" id="toto_maison">Externe</a>

La méthode pour lier un événement est tout simplement "element.evenement" lorsque il n'y a pas de paramètres et "element.evenement = function() {}" lorsqu'il y a un ou plusieurs paramètres.

Ce qui donne dans notre cas :

document.getElementById('toto_maison').onclick = function()
{
	tell('toto', 'maison');	
}

Seulement si vous insérez directement ce code dans votre fichier javascript, il ne va pas fonctionner car il va vouloir lier l'événement alors que la page n'est pas terminée de charger et que cet élément n'existe pas encore !

La solution est alors de faire une fonction pour englober les liaisons :

function loadEvents()
{
	// Evenement pour le lien toto
	document.getElementById('toto').onclick = function()
	{
		tell('toto', 'maison');	
	}
}

Une fois cette fonction créée il faut encore la charger elle aussi, on pourrait le faire avec un onload() sur le body mais on a décidé de tout externaliser.

La solution consiste alors à définir l'exécution de cette fonction une fois que la fenetre est chargée :

window.onload = loadEvents;

Et voila, nous avons notre code final qui externalise totalement le javascript. Exemple complet ci-dessous :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Externalisation</title>
<script type="text/javascript" src="externalisation.js"></script>
</head>
<body>
	<a href="#" onclick="tell('toto', 'maison')">Interne</a>
	<br/>
	<a href="#" id="toto_maison">Externe</a>
</body>
</html>
// JavaScript Document
window.onload = loadEvents;
 
function loadEvents()
{
	// Evenement pour le lien toto
	document.getElementById('toto_maison').onclick = function()
	{
		tell('toto', 'maison');	
	}
}
 
function tell(personne, objet_creux_feminin_singulier)
{
	alert(personne+" rentre dans sa "+objet_creux_feminin_singulier);	
}

EDIT : Ce script est maintenant disponible dans mon labo

Les derniers animes sympas !

Un dernier post pour cette matinée et pour lancer le blog, sur les derniers animes sortis au japon qui m'intéressent, car il y en a bien sûr d'autres, soit qui ne m'intéressent pas, soit que je n'ai pas eu le temps de découvrir. Pour ceux qui ne connaissent pas le monde des animes c'est par ici qu'il faut commencer !

Je vais donc parler de 4 animes que je regarde en ce moment dans l'ordre de préférence :

Noein - Mou hitori no kimi e

Noein Le meilleur anime actuellement en diffusion pour moi est Noein, c'est une histoire de science-fiction qui tourne autour des mondes parallèles, du temps et de l'espace, un sujet que l'on ne connait pas du tout, qui est basé sur des suppositions, et l'anime tire sa force justement de là ! Dès le premier épisode on tombe dans un monde imaginaire, avec des musiques sublimes, un "chara design" un peu déroutant au premier abord mais on s'y habitue très vite ! En bref un anime a découvrir de toute urgence ! L'anime est rendu à l'épisode 21 sur 24.

Kiba

Kiba Kiba est plutôt un anime fantastique que science-fiction, c'est beaucoup plus de l'imaginaire, avec des "esprits" que l'on invoque pour combattre, etc... On en est à l'épisode 6, l'intrigue n'est pas aussi forte que celle de Noein mais mérite le détour, l'animation est sympathique et la musique aussi (il y a d'ailleurs un sacré thème de trompette solo...), on a eu le droit a une histoire parallèle entre deux personnages qui se connaissaient au tout début pour le moment et l'on se demande quel sera leur lien dans les futurs épisodes...

Major

Major Major est un anime du genre sport, et plus précisemment du baseball, il raconte l'histoire de Goro, jeune fan de baseball qui semble avoir une bien belle carrière de joueur professionnel devant lui mais qui va en voir de toutes les couleurs si il souhaite y parvenir... Bon alors moi je ne suis pas un fan de baseball mais cet anime est vraiment bien fait et nous fait aimer ce sport, on s'attache aux personnage, les musiques sont aussi très bien. Major est rendu à l'épisode 44, c'est donc la saison 2, la saison 1 étant terminée depuis le 26 ème épisode. Vous pouvez commencer à la saison 1 elle n'est pas encore licenciée (liens sur wtg fansubs).

.hack//Roots

hack roots Le dernier, hack roots correspond quand a lui à un genre assez peu commun, fantastique certes, mais l'histoire se déroulant dans un MMORPG, vous savez ces jeux Online Persistants comme World of Warcraft on l'on n'a plus de vie sociale après ^^. Hack est une série ayant plusieurs "saisons" différentes. La première, et selon moi la meilleure est .hack//Sign, l'histoire est vraiment fantastique, et les musiques géniale aussi, cette saison étant licenciée vous pouvez la trouver en DVD. Hack Roots se raprocherait de ce premier épisode et pour ce que j'ai vu pour le moment (4 épisodes sortis), l'histoire est un peu lente, mais on sent que quelquechose se met en place et ça donne vraiment envie de savoir quoi...

Pour terminer, je pense que pour juger un anime il faut regarder le premier épisode, ce que je vous invite à faire ;)

Mission Impossible 3 - Par J.J. Abrams

Comme prévu je vais commencer par Mission Impossible 3 vu en salle mardi dernier. Pourquoi en parler ? On se souviendra du 1 et du 2 qui n'étaient pas franchement des chefs d'oeuvres, mais celui-ci a la particularité d'être réalisé par J.J. Abrams !

Mission impossible 3

Et alors ? Qui est JJ Abrams ? On trouvera une description sur allociné mais on retiendra principalement qu'il réalise les séries Alias et Lost !

On a alors parlé d'un film plus humain que les précédents, qui montre un visage différent du personnage Ethan Hunt joué par Tom Cruise (qui produit aussi le film) et il a donc fallu vérifier que tout ceci était bien vrai !

Et bien certes, après l'avoir vu je trouve qu'il est sans conteste le meilleur des trois, il y a tout de même énormément d'action, on en ressort en voyant des explosions partout et en sautant entre les immeubles :)

Le seul point négatif c'est malheureusement la bande annonce, qui montre déjà les répliques les plus marquantes du film (par le méchant).

dharma

Et maintenant profitons-en, pour parler de Lost ! J.J. Abrams en a toujours parlé dans ses interviews pour mission impossible. Avant-hier sortait l'épisode 21 de la saison 2 de Lost (aux états-Unis), je l'ai regardé hier soir et comme prévu ça commence vraiment à redevenir très intéressant et l'on repart comme au début de la saison à redécouvrir plus de choses sur la Dharma Initiative et sur Mr Eko qui semble donc jouer un rôle important dans tout ça (sans parler de John ^^). En bref un très bon épisode qui ogure de très bonnes choses pour le 22, le "season final", qui sera un double épisode si mes souvenirs sont bons :)

PS : Je viens de penser à ceux qui en sont toujours à la saison 1 :) Ne vous inquiétez pas vous comprendrez bientôt avec le tout début de la saison 2 qui est vraiment extraordinaire !

Ouverture d'un nouveau blog

Bonjour tout le monde, J'ai décidé ce matin (sur un coup de tête comme dab ^^) de réouvrir un blog, j'ai déjà tenté plusieurs fois l'expérience mais je n'arrivais pas à blogguer, manque de temps, manque d'envie ?


Ecrire n'est pas forcément ce que je fais le mieux mais c'est peut-être aussi une des raisons pour lesquelles il faut que je m'y mette ? Si l'on écrit pas on ne progresse pas non plus :) (Sans compter qu'il va bientôt falloir que je rédige un rapport de stage ^^).

Donc et bien je vais parler un peu de tout ce que j'aime, qui fait mon quotidien :
  • Internet et le multimédia qui restent ma grand passion, mon métier, avec des astuces, un devBlog, mais aussi quelques billets sur l'association Just Plug & Play que j'ai créé il y a quelques temps pour parler de son avancement.
  • Le cinéma, quelques séries télés qui font aussi partie de ce que j'adore, se plonger dans un univers, oublier le monde alentours, se réveiller complètement désemparé...
  • L'animation japonaise, qui, dans la même optique que les séries télés et le cinéma nous fait découvrir des mondes totalement différents, le japonais (je commence à comprendre de plus en plus d'expressions sans regarder les sous-titres :)), des histoires vraiment intéressantes...
  • The world, avec un peu de tout, il y aura peut-être la DADVSI mais c'est presque terminé maintenant, l'affaire clearstream ah ah comment perdre son temps pour des conneries avec les projets de lois importants qu'il y a à côté (DADVSI ?), des découvertes quelconques qui m'intéressent..
  • Et moi, je sais pas si je vais beaucoup blogguer sur moi c'est pas ce que je préfère mais peut-être si il m'arrive des trucs de fou (quand je serais plus à saint-dié ça ^^).

Voila et bien bonne lecture je vais commencer par trouver un style pour le blog et je post sur M:I:3 !