Я работаю над средним приложением в Javascript. Я хотел бы создать переключатель, аналогичный переключателю окон ОС. Когда пользовательский интерфейс становится активным, он должен отключать все прослушиватели событий от других частей пользовательского интерфейса и предоставлять активному пользовательскому интерфейсу эксклюзивный доступ к клавиатуре и вводу мыши. Например, ctrl+c
на активной панели будет копировать данные панели, а ctrl+c
на активном холсте скопирует выбранную фигуру. Обе панели и холст содержатся в одном представлении.Внедрение Switcher в Javascript
Один из способов реализовать это - использовать шаблон наблюдателя, предоставляя одному наблюдателю эксклюзивный доступ к отключению других наблюдателей (коммутатора), что помешает нежелательным наблюдателям вмешиваться в ввод клавиатуры и мыши.
Это, однако, экспериментальное решение, каковы текущие опрятные способы реализации этой функции с помощью Javascript?
Я думаю, что это на самом деле больше из/CSS вопросов HTML - читать на свойстве CSS под названием 'указатель events' https://developer.mozilla.org/en- US/docs/Web/CSS/pointer-events –
@JeremyJStarcher Спасибо за ссылку, я не знал об этой классной функции CSS. Однако это, похоже, не решает проблему отправки клавиатуры inupt, например, в отличие от входных элементов, которые невозможно прослушать для событий нажатия клавиш на div или холсте, поэтому эти события должны быть пойманы на уровне окна и отправлены для активных наблюдателей. – sudo
В ES6 нет ничего нового, что позволило бы вам сделать это намного иначе, чем вы сделали бы это в ES5. Если вы хотите избежать шаблона наблюдателя, вы должны взглянуть на функциональное реактивное программирование. – Bergi