очередь событий
может уже поднималась тема. если да, прошу ткнуть. вообщем есть инпут. вешаем события:
<!DOCTYPE html> <html> <head> <title>test</title> </head> <body> <script> function b(e) { console.log(e); } window.onclick = function (e) { console.log(e); } </script> <input type="text" onblur="b(event)"> </body> </html> такой эксперимент: наводим фокус на инпут. и теперь у нас есть 2 варианта его потерять: 1) кликом по чем нибудь 2) и обычным табом можно с помощью event проследить список вызываемых событий? т.е. будет вызван только blur или blur and click? |
Сначала будет вызван blur, затем click.
|
Цитата:
|
Какая еще очередь? Ее просто нет.
Нужна последовательность событий - вешай обработчики и логируй все события для себя. |
Цитата:
|
skrudjmakdak, в консоли разве не видно что происходит или ты ей не доверяешь?) Нет такого события blurandclick)
|
допустим есть контекстное меню (через жопу, на сколько успел накидать)
<!DOCTYPE html> <html> <head> <title>test</title> <style> div { width: 100px; height: 100px; border: 1px solid black; } </style> </head> <body> <input type="text" onblur="b(event)" onfocus="f(event)"> <div style="display: none;"></div> <script> var div = document.querySelector('div'); function f(e) { div.style.display = 'block'; } function b(e) { console.log(b); } window.onclick = function (e) { if (e.target === document.body) { div.style.display = 'none'; } } </script> </body> </html> нужно сворачивать, если потерялся фокус у инпута или нажали не на дивку с инпутом |
можно это как то упростить?))
<!DOCTYPE html> <html> <head> <title>test</title> <style> div { width: 100px; height: 100px; border: 1px solid black; } </style> </head> <body> <input type="text" onblur="b(event)" onfocus="f(event)"> <div style="display: none;"></div> <script> var div = document.querySelector('div'), input = document.querySelector('input'); function f(e) { div.style.display = 'block'; } function b(e) { console.log(lastKeyDown); if (lastKeyDown == 9) { div.style.display = 'none'; } } var lastKeyDown = null; window.onkeydown = function (e) { lastKeyDown = e.keyCode; } window.onclick = function (e) { if (e.target != div && e.target != input) { div.style.display = 'none'; } } </script> </body> </html> |
skrudjmakdak, так инпут в дивке или нет, а то в коде нет, а в последнем предложении да? :blink:
|
где инпут в дивке? нет. нитам нитам
|
Часовой пояс GMT +3, время: 03:17. |