Как настроить Focus на объект документа tizen веб-приложения для eventListener? (Javascript) - PullRequest
2 голосов
/ 11 марта 2019

Я разрабатываю Tizen Webapp для часов с вводом лицевой панели. Чтобы прослушать событие поворота панели в HTML-документе, я использовал следующий код:

rotaryDetentCallback = function rotaryDetentHandler(e) {
    var direction = e.detail.direction;
    if (direction === "CW") {
     alert("<-");
    } else if (direction === "CCW") {
     alert("->");
    }
}; 
document.addEventListener("rotarydetent", rotaryDetentCallback, false);
  console.log(document.hasFocus());//returns true

$('select').on('change', function(){
  console.log(document.hasFocus());  //Prints false
  document.activeElement.blur();     //doesnt work
  window.focus();                    //doesnt work
  document.focus();                  //retuns error
});

Слушатель rotarydetent прекрасно работает, но после того, как я изменил любой элемент Select в приложении во время выполнения, документ теряет фокус, и событие больше не запускается.

Как вернуть фокус на объект document после изменения выбора?

PS: стандартный пользовательский интерфейс для выбора тега в носимых веб-приложениях Tizen также использует лицевую панель, поэтому я предполагаю, что он берет EventListener из документа и не возвращает его.

1 Ответ

0 голосов
/ 17 марта 2019

Нет такой функции document.focus() и window.focus() для восстановления фокуса в текущем окне (, очевидно, если у вас несколько открытых ), а не для его переноса вернуться к содержанию страницы.

Попробуйте вместо этого сфокусировать document.body или его фокусируемого предка - поле, представляющее собой поле формы , или ссылка или имеющее соответствующий атрибут tabIndex .

...