web-dev-qa-db-fra.com

Personnalisateur: deux déclencheurs synchronisés avec un widget

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.

enter image description here

Ce comportement par défaut peut-il être empêché dans un widget personnalisé?

Merci!

Cinglement @WestonRuter

1
superwinner

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é.

2
Weston Ruter

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

0
superwinner