Je viens de remarquer que widget-synced
est déclenché deux fois lorsque vous essayez de modifier un widget, cliquez sur un champ de texte, écrivez quelque chose, déclenche une fois widget-synced
et ensuite, si vous cliquez n'importe où ailleurs, cela déclenche une seconde fois.
Ce comportement par défaut peut-il être empêché dans un widget personnalisé?
Merci!
Cinglement @WestonRuter
La raison en est que le widget exécutera sa logique de mise à jour sur keydown
et également sur change
pour un élément input
donné. Voir https://github.com/WordPress/wordpress-develop/blob/4.7.2/src/wp-admin/js/customize-widgets.js#L891-L907
Il y a des compromis à faire lorsque des widgets ont été ajoutés au personnaliseur pour amener ces interfaces pilotées par PHP dans un contexte piloté par JS. Ce n'était pas parfait et c'est donc une partie de la raison derrière le plugin de fonctionnalité JS Widgets , afin de moderniser la manière dont les widgets personnalisés sont implémentés dans le personnaliseur.
Si vous voulez vraiment écouter ce qui se passe lorsqu'un widget change réellement d'état, vous pouvez plutôt écouter le changement setting
sous-jacent du contrôle. Le paramètre ne sera mis à jour qu'une fois après un événement keydown
et change
donné.
J'ai un peu réussi à le réparer, je ne sais pas si c'est la bonne façon, c'est en cas de champs triables, en utilisant l'événement stop et en vérifiant si le bouton "Appliquer" est à l'intérieur du widget: https://jsfiddle.net/6h5t5r6y