Разобрался.
По этой сенсорной кнопке в браузере не возникают никакие события типа ontouch или onkeydown. Однако, при нажатии этой кнопки меняется window.location.hash. А если изменилось значение hash, то возникает событие onhashchange.
Идея заключается в том, чтобы перед показом на экране своей псевдомодальной диалоговой панели (например, Меню) прописать в hash некое "секретное" слово. Оно изменится при нажатии backbutton и сработает событие onhashchange, которое мы ловим.
function openmenu()
{
// ... показываем панель на экране
window.location.hash = 'menu';
};
function closemenu()
{
// ...скрываем меню
window.location.hash = '';
};
window.onhashchange = function()
{
var s = window.location.hash.toString();
if (s != '#menu')
{
// ... проверить наличие панели и видимость её на экране
// ... скрыть панель
}
};
Но при манипуляции hash в адресной строке браузера к тексту добавляется секретное слово "#menu", что не всем понравится.
Что хуже, при стирании (hash = '') в адресной строке остается символ #. И лично мне такое совсем не нравится.
Поэтому надо использовать histAPI:
function openmenu()
{
// ...
history.pushState('', document.title, window.location.pathname + '#menu');
};
function closemenu()
{
// ...
history.pushState('', document.title, window.location.pathname);
};
На закуску вопрос: backbutton - это внизу справа. Но на смартфоне есть аналогичная кнопка внизу слева, которая в основном вызывает стандартное меню. Вот как её перехватить в браузере?