2 votes

Xhtml.of_string_unsafe disable onclick

J'ai un problème, voici un petit exemple :

Xhtml.of_string_unsafe(Xhtml.to_string(<button onclick={_->jlog("coucou")}>bouton</button>))

Et quand je clique sur le bouton, rien ne se passe...

Y a-t-il un bug dans l'opa ?

2voto

frs Points 21

Premier élément de réponse : pour accélérer le chargement des pages, Opa charge d'abord le HTML et reporte les balises script (chargement de tout le code côté client) à la fin de la page. Dans un cas d'utilisation normal, les actions onclick sont alors déléguées jusqu'après le chargement du code JS. Cela ne peut pas se produire ici, et votre exemple montre en fait une erreur JS : il essaie d'utiliser jQuery, qui n'est pas encore chargé (il est chargé dans le cadre du fichier all.js).

En revanche, si vous insérez ce XHTML dangereux de manière dynamique, c'est-à-dire après le chargement du JS, vous n'obtiendrez pas d'erreur. L'exemple de code est le suivant :

page() = 
  btn = Xhtml.of_string_unsafe(Xhtml.to_string(<button onclick={_ ->jlog("coucou")}>bouton</button>))
  <span id="toto" onready={_ -> Dom.transform([#toto <- btn])} />
server = one_page_server("Test", page)

Cependant, cela ne fonctionne toujours pas. Je ne sais pas encore pourquoi.

1voto

Fred Points 1092

Je pense que c'est "normal", transformer un XHTML en une chaîne de caractères basique ne permet pas de conserver les gestionnaires d'événements...

L'onclick n'est pas sérialisé dans la chaîne.

Quelqu'un peut-il confirmer ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X