Quel avenir pour ça ?





Salut !

J'ai développé à partir de ce que j'ai trouvé comme codes et comme discussions sur le web à propos de la séparation contenu/présentation/comportement (modèle MVC qu'on me dit), une librairie permettant de déclarer ce que j'appelle une "feuille de comportement" (behavior sheet).

Un exemple ici : http://naholyr.free.fr/events/test.html

En gros on sépare la déclaration en 2 éléments :
- une feuille de comportements dont la syntaxe est très proche d'une feuille de style, par exemple tag.classe:evenement { fonction }
- un script javascript qui implémente les dites fonctions

Bien sûr il faut inclure en plus la librairie, qui va lier tout ça et avec DOM insérer les comportements (rien que de très classique).

Il n'y a aucune technique révolutionnaire là dedans, mais je n'ai pas trouvé de doc ou de projet qui essaie d'implémenter ce genre de chose dans les navigateurs, ai-je mal cherché ? Ce principe n'est-il pas intéressant ? Vous en pensez quoi ?

Edit quelques (six) heures plus tard : vu l'affluence de réactions, je me demande si je l'ai mis dans le bon forum...
Modifié par naholyr (11 Aug 2005 - 15:17)
QuentinC a écrit :
le comportement se programme en javascript, je ne comprends pas où tu veux en venir ?

C'est pourtant loin d'être caché... Je veux en venir à l'écriture de feuilles de comportements comme on écrit les feuilles de style, de cette manière :
a:click {
    popupIfExternal;
}


Je suis vraiment surpris que ça ne paraisse pas aussi naturel que les CSS à un public attaché à la séparation contenu/présentation, puisque la suite logique et naturelle est une approche MVC où l'externalisation de la déclaration des comportements s'impose d'elle-même, via une feuille de comportements idéalement.
Modifié par naholyr (11 Aug 2005 - 20:33)
Slt,

a écrit :
Note [...] 1998


pas implémenté du tout !

Une question : en quoi javascript est insufisant pour faire ce que tu veux ?

Sinon, XBL serait la solution que tu recherches...

++
Javascript n'est pas insuffisant, la preuve j'ai implémenté ça en partie avec une simple librairie en Javascript.
Je ne recherche rien en particulier, je venais simplement discuter de l'utilité d'une telle méthode (encore que moi j'en sois tout à fait convaincu, mais je m'étonne de l'absence total d'intérêt pour le modèle MVC dans les pages web).

XBL mouais... C'est du XML, et autant je trouve ça bien adapté pour une page web, autant je ne verrais pas une feuille de style écrite en XML (le langage CSS fut un excellent choix, dieu merci ils ne nous ont pas collé du XML là-dedans), et comme je trouve que les feuilles de comportements (du coup je devrais dire "feuille d'actions") sont en tous points comparables aux feuilles de style, il me parait indispensable d'avoir une syntaxe similaire.

Je pense qu'on y viendra... Peut-être est-ce encore un petit peu tôt, mais on voit des solutions de l'ordre de la bidouille pour permettre l'ouverture de popup sans utiliser "target" ou mettre de Javascript dans tous les liens. C'est un début, ça ouvre la reflexion à la séparation complète contenu/présentation/contrôle, et je m'étonne que la balle ait été encore si peu saisie...
Bonjour,
ah ok je comprends mieux.
A mon avis c'est parce qu'il y a beaucoup trop de possibilités. Autant en CSS le nombre de possibilités est fini (bordure, arrière-plan, couleur, police, etc) il n'y a pas 36000 propriétés. Par contre au niveau comportement, on peut vouloir énormément de choses différentes. Un langage de script relativement complet comme javascript est donc nécessaire.
Nan t'as toujours pas compris Smiley cligne

Le but c'est bien d'utiliser Javascript, mais uniquement pour spécifier l'action, pour le déclencheur on utilise une syntaxe CSS. Par exemple pour ouvrir tous les liens pointant sur un domaine différent dans une popup on va implémenter une fonction popupIfExternal(event) en Javascript, qui ouvre une popup et renvoie false si le lien pointé est externe, et sinon renvoie true. On ne modifie pas nos liens, on ajoute simplement la déclaration de cette fonction et une feuille d'actions :

Version ActionSheet de la note de 98
a { onClick: "popupIfExternal(event)" }

Version que j'ai développée
a:click { popupIfExternal }


Leur syntaxe permet de déclarer moins de règles : elle est ciblée sur le type d'éléments et décrit ensuite les déclencheurs associés à un code, et pas ciblée sur le déclencheurs pour décrire les actions (sous forme de fonction uniquement en plus).

Javascript décrit l'action, ActionSheet lie déclencheurs et action. Un peu comme si en CSS on pouvait redéfinir nos couleurs, et les attribuer ensuite avec une StyleSheet.
Salut,

Je trouve ça intéressant, notamment parce que ça permet de définir ses comportements de manière propre et simple.

NB : J'ai mis "vote blanc" car je n'ai pas trouvé "intéressant, mérite qu'on s'y attarde".
Slt,

en fait ce que tu cherches existe et ça s'appelle XML-Events.

Mais ça passe par des attributs de l'espace de nommage XML-Events, pas par du CSS.

++
naholyr a écrit :
Je me disais que je n'étais pas fou lol
http://www.w3.org/TR/NOTE-AS
Quelqu'un sait où ça en est de l'implémentation dans les navigateurs ?
Sauf erreur ceci n'est pas encore parvenue au rang de standard, et n'y parviendra jamais. L'idée des Behavior a été poussée (et implémentée sur IE) par Microsoft sans toutefois parvenir à "l'imposer".

Sans être spécialiste, la voie actuelle serait plutôt:
- ajout de propriétés dans CSS
- extension par la définition de nouveaux modules XHTML

Il me semble (opinion personnelle) que la volonté des équipes qui encadrent les standards web est de maîtriser et contenir les progrès futurs de l'interface web dans un souci d'interopérabilité notamment. L'introduction de javascript comme moyen officiel de gérer l'interface web ne va pas dans ce sens :
- on peut coder n'importe quoi et n'importe comment en javascript
- du fait du point précédent on ne peut imposer la présence de javascript sur une plateforme

Enfin la possibilité de séparer correctement structure du document et l'ensemble des aspects de présentation comprenant des effets javascript n'est pas nouveau et déjà présenté à de nombreuses sauces. Est-il vraiment besoin de statuer sur une syntaxe et des modalités précises ?