Usar TAL: variable definida en javascript

Estoy creando una plantilla de página para un website basado en plone. Definí algunas variables usando el lenguaje de attributes de la plantilla:

<tal:macro metal:define-macro="sample" tal:define="var python: here.getThisVar();"> 

Ahora me gustaría utilizar var en un file javascript externo, al que llamo haciendo clic en un button dentro de mi plantilla. ¿Cómo puedo transferir mi variable, que puedo trabajar con ella en mi file javascript?

En su plantilla, defina una variable de JavaScript escribiéndola usando TAL de la siguiente manera:

 <script type="text/javascript" tal:content="string:var MY_VAR=${view/myVar};"></script> 

Ahora MY_VAR debería estar disponible en el scope de su js externo siempre que lo llame después de la línea de arriba …

Otra forma: inyecte su variable en HTML usando un atributo de data HTML 5 ::

 <div id="myVar" tal:attributes="data-myVar python:here.getThisVar();"> 

Luego léelo usando JAvaScript / jQuery ::

 $('#myVar').data('myVar'); 

Hay una variedad de forms de hacerlo. Todos implican build código Javascript como si fuera text, y luego devolver el resultado para insertlo en una página o representarlo como un recurso JS en el logging de javascript.

Si desea un ejemplo robusto que incluya disposiciones para la traducción de posts y funcione con el logging de resources de JS, vea la forma en que Plone lo hace: https://github.com/plone/Products.CMFPlone/blob/4.2.7/ Productos / CMFPlone / browser / jsvariables.py