Accueil » Zope » Forum Zope » Forum Général Zope » onload qui change selon les pages

 • onload qui change selon les pages

Document Actions
Réponses: 2   Visites: 0
Up one level
Vous devez être un membre enregistré pour contribuer sur ce forum. Inscrivez-vous maintenant

 • onload qui change selon les pages

Posté par ychaouche le 28/11/2007 18:31
Bonjour,
# Les données

J'ai un site plone.
Toutes les pages utilisent une master template.
La master template définie un tiroir (slot), avec quelque chose comme
code:
<metal:bodytext metal:define-slot="main" tal:content="nothing"> </metal:bodytext>


Les pages qui utilisent cette master_template.pt remplisse alors le slot avec quelque chose comme :
code:
<div id="contentEmployeurs" metal:fill-slot="main" tal:define="errors options/state/getErrors;">
 contenu...
</div>


# Ce que je veux faire
Je veux que chaque page puisse faire ses tâches préliminaires javascript lors du body onload.

# Le soucis qui se pose
Les pages ne définissent pas elles-même le body, elles utilisent la main_template.pt qui elle définie le body.
Donc si je change le onload sur la main_template.pt, il sera le même pour toutes les pages...

# La question :
Comment faire pour avoir un traitement javascript spécifique à chaque page lors du onload ?

# Idées :
Je me demandais s'il était possible de faire :
code:
<body onload="foo">

dans la master_template.pt, et que le code de foo soit définie dans un fichier javascript acceptant du code metal. Ainsi, chaque page pourra remplir les slot à sa guise, le code de foo sera différent pour chaque page.

Ou peut être l'idée suivante :

code:
<body tal:attributes="onload options/fonctionjs">


En faisant en sorte que la page fille qui appelle la main_template lui passe des options ???

Quelqu'un a-t-il déjà eu à faire un truc pareil ? avez-vous des idées à me proposer ?

En vous remerciant par avance

Yassine.
  •  • Re: onload qui change selon les pages

    Posté par tcr le 25/01/2008 16:41
    'pas tout compris, mais...

    Est-ce que tu ne peux pas faire une fonction JavaScript (JS) qui prendrait en paramètre l'ID de la page (par exemple du DIV) et le "onload" exécuterait la fonction JS qui testerait l'ID est exécuterait tes tâches JS en conséquence...
  •  • Re: onload qui change selon les pages

    Posté par ychaouche le 25/01/2008 23:46
    Merci de ta réponse,

    Je n'ai pas résolu le problème mais je l'ai contourné.

    Le but étant d'exécuter une fonction javascript dès qu'un élément HTML particulier est crée, je mets une balise <script> en plein milieu de mon code body. C'est pas spécialement crado car la spécification HTML dit bien que les balises script peuvent apparaitre aussi bien dans le head que dans le body.

    Merci pour ta réponse en tout cas. J'avais à peu près la même idée, sauf qu'au lieu que ma fonction JS teste les ID et fasse le traitement selon, je pensais que le corps de la fonction pouvait être écrit dans la template fille à l'aide d'un metal-fill slot. Le define-slot serait dans le fichier javascript qui contiendrait la fonction JS. Mais je me rends compte que c'est inutile en plus d'être tiré par les cheveux :).