Переопределение (IE7) обработка клавиатуры браузера из Silverlight - PullRequest
0 голосов
/ 20 апреля 2009

Когда я тестирую свое приложение Silverlight 2 в Firefox, когда Silverlight имеет фокус, у меня не возникает проблем при получении каждого нажатия клавиши через событие Page.KeyDown.

Когда я тестирую его в Internet Explorer 7, я могу получать только события клавиатуры, которые браузер еще не обрабатывает. ОДНАКО, я могу переопределить те же самые события клавиатуры в javascript.

Например, Ctrl + D . Я могу переопределить это в javascript , выполнив следующие действия, но я не могу сделать то же самое в Silverlight !!

function initKeyHandling(){ document.attachEvent("onkeydown", keydown); }

function keydown(e) { printToTextbox('Keydown ', e); return false; }

...

initKeyHandling();

Кроме того, мои попытки перенаправить события из Javascript в Silverlight потерпели неудачу. Мои обработчики событий клавиатуры javascript даже не запускаются, когда Silverlight находится в фокусе.

Ответы [ 2 ]

2 голосов
/ 21 апреля 2009

Из документации кажется, что это невозможно (по крайней мере, без обхода JavaScript, как вы упоминаете):

События клавиатуры и браузер Различные браузеры могут обрабатывать События клавиатуры по-разному. Когда ты создать приложение, которое использует ввод с клавиатуры, обязательно проверьте приложение в целевых браузерах.

Браузер определяет, какой нажатия клавиш интерпретируются как команды и какие нажатия клавиш он передает размещенный контент. Это означает, что определенные нажатия клавиш не могут быть получены из обработчика событий KeyDown и KeyUp функции. Большинство нажатий клавиш браузер интерпретирует как команды сочетания клавиш или ускорения, и не передаются в качестве ключевых событий Silverlight. Например, CTRL + D является комбинация сочетаний клавиш для добавление любимого URL в Firefox и браузеры Internet Explorer, и ни CTRL, ни D не сообщаются как ключевое событие.

Посмотрите на: http://msdn.microsoft.com/en-us/library/cc189015.aspx

Я думаю, что читал об обходе с базовым текстовым полем HTML на днях. Но я не уверен, что это все еще поддержано, или каковы были детали. Я вернусь, если найду его снова.

/ Asger

0 голосов
/ 21 апреля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...