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

HTML+CSS+JavaScript

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

 

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

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

тема: Как имитировать нажатие клавиш
 
 автор: Владимир22   (20.02.2012 в 17:06)   письмо автору
 
 

Подскажите, как можно, с помощью JavaScript нажать, например, комбинацию клавиш "Ctrl+D"?

  Ответить  
 
 автор: ЯСА   (20.02.2012 в 17:54)   письмо автору
 
   для: Владимир22   (20.02.2012 в 17:06)
 

Сэмулировать событие нажатия клавиши (и даже комбинации клавиш) можно.

Однако вам же интересно их не просто нажать, а чтобы последовало дефолтное действие после нажатия этой комбинации клавиш
В данном случае после нажатия Ctrl+Del вы хотите открытия окошка добавления в избранное.

Увы, во ВСЕХ браузерах для каждого события есть флаг (свойство) isTrusted.
Для событий, инициированных пользователем этот флаг равен true и дефолтное событие произойдёт.
А для событий, инициированных скриптом, isTrusted == false и никакого добавления в избранное вы добиться не сможете.
И изменить свойство isTrusted события нельзя - оно read only.
-----

А так - пожалуйста, пропечатать ту же букву D в каком-то инпуте - нет проблем.
Вот, например, код для FireFox:
<body>
<input id="tst" autocomplete="off">

<script>
onload = function ()
{
var evnt = document.createEvent ('KeyboardEvent');
var cd = 'D'.charCodeAt (0);
var obj = document.getElementById ('tst');
obj.focus ();

evnt.initKeyEvent ('keydown',  1, 1, window, 0, 0, 0, 0, cd, cd); obj.dispatchEvent (evnt);
evnt.initKeyEvent ('keypress', 1, 1, window, 0, 0, 0, 0, cd, cd); obj.dispatchEvent (evnt);
evnt.initKeyEvent ('keyup',    1, 1, window, 0, 0, 0, 0, cd, cd); obj.dispatchEvent (evnt);
}
</script>
</body>

Понятное дело, что всё выше написанное внутри функции много проще записать одной строкой:
document.getElementById ('tst').value = 'D';

И обычно так и делается.
Но я вам здесь показал - как сэмулировать именно НАЖАТИЕ клавиши D на клавиатуре.
Заметьте, событие надо сэмулировать полностью и в правильном порядке: опускание клавиши, нажатие, отпускание клавиши.

PS. Запись кода для MSIE, Opera и прочих браузеров, разумеется, немного иная.
Но и там isTrusted для сформированных скриптом событий == false.

  Ответить  
 
 автор: Владимир22   (20.02.2012 в 20:00)   письмо автору
 
   для: ЯСА   (20.02.2012 в 17:54)
 

Спасибо, теперь всё понятно.

  Ответить  
Rambler's Top100
вверх

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