Здравствуйте, столкнулся с проблемой следующего характера: "Случайное нажатие кнопки назад". Т.е. в процессе заполнения формы, пользователь случайным образом нажимает кнопку "Назад" по истории или на клавиатуре "Backspace". Можно ли с помощью javascript отловить эти события? Алгоритм я представляю так: Если произошло нажатия "Backspace" то запросить подтверждение этого события в отдельном окне. Да - продолжить. Нет - отменить событие. Вроде с первой частью разобрался: HTML: <head> <script> document.onkeyup=keyup function keyup(e) { e = e || window.event if (8==e.keyCode) alert("space") } </script> </head> но почему-то не всегда срабатывает.
[js] <script type="text/javascript"> window.onbeforeunload = exitWithPromt; function exitWithPromt() { return 'Уйти со страницы?'; } </script> [/js]
Спасибо, отчасти решает проблему. НО есть проблема в том, что это окно всё время выскакивает даже если надо перегрузить страницу. Нашёл 2ой способ, но работает только в EI =) HTML: <body> <script type="text/javascript"> var bsp = false; function checkButton() { if (!bsp) { if(event.keyCode==8 || event.keyCode==13) { return false; } } } document.body.onkeydown = checkButton; </script> </body>
Вроде перемудрил, но работает =) [js] var bsp = false; if(navigator.appName.indexOf("Netscape") != -1){ window.document.onkeydown = function checkButton(e) { if (!bsp) { var key; if(window.event) key = window.event.keyKode; else if (e) key = e.which; if(key==8 || key==13) { return false; } } } } if(navigator.appName.indexOf("Microsoft") != -1) { window.document.onkeydown = function checkButton() { if (!bsp) { if(event.keyCode==8 || event.keyCode==13) { return false; } } } } [/js]
window.document.onkeydown = function checkButton ... Это надо прописывать для каждого браузера. Для IE не прописано.