|
|
|
| Создавал тему в разном, но потом понял, что создал не там. И к тому же, там все молчат почему-то. Дублирую здесь. Админы, удалите пожлста одну из этих тем.
============
Пишу сайт. Он очень оригинальный, так что там требуется считывать с клавиатуры нажатие цифр. Причем, не тогда, когда курсор в поле ввода, а просто. В ИЕ все нормально. Моя функция перехватывает нажатие на клавишу. палит номер клавиши и делает дальше что надо. В опре немного по-другому:
Дело в том, что у оперы какой-то... умелец... назначил на цифры всякого рода колбашение страницы, масштабов и прочего. Получается, что моя функция срабатывает, но предварительно страницу нехило колбасит.
Вопрос: можно ли предотвратить эту муть?
====
Теперь про хелп. На том же сайте, в силу того, что он весьма экстравагантен, нужно было обеспечить хелп. Он вызывается кнопкой F1. В ИЕ есть событие onhelp, в котором я перехватываю спокойно появление помощи браузера, возвращаю false и дальше вывожу свою помощь. В Опере и ФФ это не работает. Вопрос: есть ли аналог onhelp для Оперы и ФФ?
====
ЗЫ. в любом случае, в ФФ не пашет половина скриптов, что я наваял, да и в опере косяки не только с цифрами. ТАк что сайт будет чисто под ИЕ. Но всетки для общего образования спрашиваю. | |
|
|
|
|
|
|
|
для: SHAman
(03.11.2006 в 13:38)
| | по поводу хелпа: лучше где-нибудь (желательно сверху в уголок забить какой-то) сделать ссылку на хелпфайл.
>Дело в том, что у оперы какой-то... умелец... назначил на цифры всякого рода колбашение страницы, масштабов и прочего. Получается, что моя функция срабатывает, но предварительно страницу нехило колбасит.
>
>Вопрос: можно ли предотвратить эту муть?
а в хелп-файлах не описано, как это убрать и чего это за событие? | |
|
|
|
|
|
|
|
для: Lelik
(03.11.2006 в 13:57)
| | По preventDefault() не отменяется стандартное событие? | |
|
|
|
|
|
|
|
для: 12345
(03.11.2006 в 15:03)
| | а что это? Впервые слышу, если честно... можно поподробнее?
===
добавлено:
нашел вот сцылку:
http://pgood.mail15.com/articles.html
почитал. вроде просто. Ща попробую. Если не сработает - вернусь;) В любом случае вернусь, но если не сработает - вернусь с новыми вопросами:)
зы. какой хороший форум. как хорошо здесь жить:) | |
|
|
|
|
|
|
|
|
для: 12345
(03.11.2006 в 16:21)
| | Не спасает. Пишу:
function key_down(e) {
if(e.preventDefault) e.preventDefault();
else e.returnValue = false;
...........
}
<body onkeydown="key_down(event);">
|
Все равно циферки делают грязное дело свое | |
|
|
|
|
|
|
|
для: SHAman
(03.11.2006 в 16:47)
| | Где-то с Оперой такое наблюдалось - при вызове контекстного меню - нет, там она просто блокировала пользовательский обработчик.
Приведи пример - что за цифры, попробую перехватить. (Может, по keydown надо.) И какая именно Опера. | |
|
|
|
|
|
|
|
для: 12345
(03.11.2006 в 17:27)
| | У меня Опера 9. Но хотелось бы, если честно, чтоб под 8 тоже работало....
Вот как у меня это выглядит в оригинале:
html:
<body onkeydown="key_down();" onhelp="my_help(); return false;" id="all_body" onload="cursor_cmdl(); float_cmd(); get_links('page_content')">
|
js:
function key_down(e) {
if(e.preventDefault) e.preventDefault();
else e.returnValue = false;
var key=event.keyCode;
if (key==13) {
var go_to=d.all['cmd'].innerText;
go_to=parseInt(go_to);
if (go_to <= my_links.length-1) {
document.location=my_links[go_to];
}
else {
d.all.cmd.innerText='';
my_win("my_error","1","300","100");
}
}
else {other_keys()}
}
|
| |
|
|
|
|
|
|
|
для: SHAman
(03.11.2006 в 17:47)
| |
<body onkeydown="key_down();" onhelp="my_help(); return false;" id="all_body" onload="cursor_cmdl(); float_cmd(); get_links('page_content')">
|
а разве после точки с запятой функция загружается?
<body onkeydown="key_down();" onhelp="my_help(); return false;" id="all_body" onload="cursor_cmdl(), float_cmd(), get_links('page_content')">
|
| |
|
|
|
|
|
|
|
для: Lelik
(03.11.2006 в 17:51)
| | А почему она должна не загружаться? У меня все работает в этом месте как раз. И все прекрасно и в ИЕ и Опере.
Проблема здесь:
и здесь:
onhelp="my_help(); return false;"
|
оба места правильно работают в ИЕ и неправильно в других местах:) | |
|
|
|
|
|
|
|
для: SHAman
(03.11.2006 в 17:58)
| | При таком вызове - onkeydown="key_down();" - доступа к объекту события не будет ни в каких браузерах. И отмены действия по умолчанию - тоже. Вызывать нужно как обработчик.
document.onkeydown=key_down; //а из body убрать
|
<body>
<script>
document.onkeydown=key_down;
function key_down(ev){if(!ev)ev=event;
if(ev.preventDefault) ev.preventDefault();
else ev.returnValue = false;
alert(ev.keyCode);
}
</script>
| Это для всех бр-ров. Дальше, наверное, всё будет в порядке. Кроме того, что некоторые клавиши отменить будет нельзя. | |
|
|
|
|
|
|
|
для: 12345
(03.11.2006 в 18:08)
| | вроде так
<div onKeyDown="keyDown()"></div>
|
? | |
|
|
|
|
|
|
|
для: Lelik
(03.11.2006 в 13:57)
| | >а в хелп-файлах не описано, как это убрать и чего это за событие?
хм... как-то не догадался посмотреть...:) спасибо. ща гляну. | |
|
|
|
|
|
|
|
для: SHAman
(03.11.2006 в 16:15)
| | если найдешь, незабудь сказать, чего за событие такое ;) | |
|
|
|