Customizer: Widget-synchronisierte Trigger zweimal

Mir ist gerade aufgefallen, dass das widget-synced zweimal ausgetriggers wird, wenn Sie versuchen, ein Widget zu bearbeiten, klicken Sie auf ein Textfeld, schreiben Sie etwas, triggers widget-synced einmal, und wenn Sie irgendwo anders klicken, triggers es ein zweites Mal aus.

Bildbeschreibung hier eingeben

Ist dieses Standardverhalten und kann es in einem benutzerdefinierten Widget verhindert werden?

Vielen Dank!

Pingen @WestonRuter

Solutions Collecting From Web of "Customizer: Widget-synchronisierte Trigger zweimal"

Der Grund hierfür ist, dass das Widget seine Aktualisierungslogik sowohl auf der keydown als auch bei der change für ein bestimmtes input keydown . Siehe https://github.com/WordPress/wordpress-develop/blob/4.7.2/src/wp-admin/js/customize-widgets.js#L891-L907

Es gibt einige Kompromisse, wenn Widgets zum Customizer hinzugefügt wurden, um diese PHP-gesteuerten Interfaces in einen JS-gesteuerten Kontext zu bringen. Es war nicht perfekt und deshalb ist dies ein Grund für das Feature-Plugin von JS Widgets , um zu modernisieren, wie benutzerdefinierte Widgets im Customizer implementiert werden.

Wenn Sie wirklich nur darauf warten möchten, wenn ein Widget tatsächlich seinen Status ändert, können Sie stattdessen die zugrunde liegende setting des Steuerelements abhören. Die Einstellung wird nur einmal nach einem bestimmten keydown und nachfolgenden change aktualisiert.

Ich habe es irgendwie geschafft, es zu beheben, weiß nicht, ob es der richtige Weg ist, dies ist im Falle von sortierbaren Feldern, mit dem Stop-Ereignis und überprüfen, ob die Schaltfläche “Anwenden” im Widget ist: https://jsfiddle.net/ 6h5t5r6y