ウィジェットを編集し、テキストフィールドをクリックして何かを書いて一度widget-synced
をトリガーしようとすると、widget-synced
が2回トリガーされ、それ以外の場所をクリックすると2回トリガーされることに気付きました。
これはデフォルトの動作ですか?カスタムウィジェットでは防止できますか?
ありがとうございます。
Pinging @WestonRuter
これは、ウィジェットがkeydown
andで更新ロジックを実行し、特定のchange
要素のinput
でも実行するためです。 https://github.com/WordPress/wordpress-develop/blob/4.7.2/src/wp-admin/js/customize-widgets.js#L891-L907 を参照してください
これらのPHP駆動型インターフェースをJS駆動型コンテキストに取り込むために、ウィジェットがカスタマイザーに追加されたときに、いくつかのトレードオフがあります。完璧ではなかったため、これが JS Widgets 機能プラグインの背後にある理由の一部であり、カスタマイザーでカスタムウィジェットがどのように実装されるかを近代化します。
ウィジェットが実際にその状態を変更したときに本当にリッスンしたい場合は、代わりにコントロールの基になるsetting
changeをリッスンできます。設定は、指定されたkeydown
および後続のchange
イベントの後に一度だけ更新されます。
私はちょっとそれを修正することができた、それが正しい方法であるかどうかわからない、これはstopイベントを使って、そして「適用」ボタンがウィジェットの中にあるかどうかチェックするソート可能なフィールドの場合である: https://jsfiddle.net/6h5t5r6y