Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Обработка цифр в Опере и помощь F1 в ней и ФФ
 
 автор: SHAman   (03.11.2006 в 13:38)   письмо автору
 
 

Создавал тему в разном, но потом понял, что создал не там. И к тому же, там все молчат почему-то. Дублирую здесь. Админы, удалите пожлста одну из этих тем.
============
Пишу сайт. Он очень оригинальный, так что там требуется считывать с клавиатуры нажатие цифр. Причем, не тогда, когда курсор в поле ввода, а просто. В ИЕ все нормально. Моя функция перехватывает нажатие на клавишу. палит номер клавиши и делает дальше что надо. В опре немного по-другому:

Дело в том, что у оперы какой-то... умелец... назначил на цифры всякого рода колбашение страницы, масштабов и прочего. Получается, что моя функция срабатывает, но предварительно страницу нехило колбасит.

Вопрос: можно ли предотвратить эту муть?


====
Теперь про хелп. На том же сайте, в силу того, что он весьма экстравагантен, нужно было обеспечить хелп. Он вызывается кнопкой F1. В ИЕ есть событие onhelp, в котором я перехватываю спокойно появление помощи браузера, возвращаю false и дальше вывожу свою помощь. В Опере и ФФ это не работает. Вопрос: есть ли аналог onhelp для Оперы и ФФ?

====
ЗЫ. в любом случае, в ФФ не пашет половина скриптов, что я наваял, да и в опере косяки не только с цифрами. ТАк что сайт будет чисто под ИЕ. Но всетки для общего образования спрашиваю.

   
 
 автор: Lelik   (03.11.2006 в 13:57)   письмо автору
 
   для: SHAman   (03.11.2006 в 13:38)
 

по поводу хелпа: лучше где-нибудь (желательно сверху в уголок забить какой-то) сделать ссылку на хелпфайл.



>Дело в том, что у оперы какой-то... умелец... назначил на цифры всякого рода колбашение страницы, масштабов и прочего. Получается, что моя функция срабатывает, но предварительно страницу нехило колбасит.
>
>Вопрос: можно ли предотвратить эту муть?

а в хелп-файлах не описано, как это убрать и чего это за событие?

   
 
 автор: 12345   (03.11.2006 в 15:03)   письмо автору
 
   для: Lelik   (03.11.2006 в 13:57)
 

По preventDefault() не отменяется стандартное событие?

   
 
 автор: SHAman   (03.11.2006 в 16:15)   письмо автору
 
   для: 12345   (03.11.2006 в 15:03)
 

а что это? Впервые слышу, если честно... можно поподробнее?

===
добавлено:
нашел вот сцылку:
http://pgood.mail15.com/articles.html
почитал. вроде просто. Ща попробую. Если не сработает - вернусь;) В любом случае вернусь, но если не сработает - вернусь с новыми вопросами:)

зы. какой хороший форум. как хорошо здесь жить:)

   
 
 автор: 12345   (03.11.2006 в 16:21)   письмо автору
 
   для: SHAman   (03.11.2006 в 16:15)
 

Всё в справочнике http://javascript.aho.ru/files/js/event.html#PreventDefault

   
 
 автор: SHAman   (03.11.2006 в 16:47)   письмо автору
 
   для: 12345   (03.11.2006 в 16:21)
 

Не спасает. Пишу:


function key_down(e)    {
if(e.preventDefault) e.preventDefault();
    else e.returnValue = false;
...........
}

<body onkeydown="key_down(event);">


Все равно циферки делают грязное дело свое

   
 
 автор: 12345   (03.11.2006 в 17:27)   письмо автору
 
   для: SHAman   (03.11.2006 в 16:47)
 

Где-то с Оперой такое наблюдалось - при вызове контекстного меню - нет, там она просто блокировала пользовательский обработчик.

Приведи пример - что за цифры, попробую перехватить. (Может, по keydown надо.) И какая именно Опера.

   
 
 автор: SHAman   (03.11.2006 в 17:47)   письмо автору
 
   для: 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()}
}

   
 
 автор: Lelik   (03.11.2006 в 17:51)   письмо автору
 
   для: 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')">

   
 
 автор: SHAman   (03.11.2006 в 17:58)   письмо автору
 
   для: Lelik   (03.11.2006 в 17:51)
 

А почему она должна не загружаться? У меня все работает в этом месте как раз. И все прекрасно и в ИЕ и Опере.

Проблема здесь:

onkeydown="key_down();" 

и здесь:

onhelp="my_help(); return false;" 


оба места правильно работают в ИЕ и неправильно в других местах:)

   
 
 автор: 12345   (03.11.2006 в 18:08)   письмо автору
 
   для: 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>
Это для всех бр-ров. Дальше, наверное, всё будет в порядке. Кроме того, что некоторые клавиши отменить будет нельзя.

   
 
 автор: Lelik   (03.11.2006 в 18:11)   письмо автору
 
   для: 12345   (03.11.2006 в 18:08)
 

вроде так

<div onKeyDown="keyDown()"></div>

?

   
 
 автор: SHAman   (03.11.2006 в 16:15)   письмо автору
 
   для: Lelik   (03.11.2006 в 13:57)
 

>а в хелп-файлах не описано, как это убрать и чего это за событие?
хм... как-то не догадался посмотреть...:) спасибо. ща гляну.

   
 
 автор: Lelik   (03.11.2006 в 17:48)   письмо автору
 
   для: SHAman   (03.11.2006 в 16:15)
 

если найдешь, незабудь сказать, чего за событие такое ;)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования