Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Возбуждение собственных событий, ввод клавиш без пользователя. 
:(
    Опции темы
Sardar
Дата 28.7.2005, 01:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(funasian @ 27.7.2005, 18:08)
Я имею ввиду вот какой перехват. Это приблизительный код.

Нет, дефолтных событий нет на сколько я знаю. Есть у <script> аттрибут event/for, но конструкция по сути заменяет inline события для элементов. Удобная кстати штука, даже в HTML DOM от W3C вошла. Кстати в XHTML по моему нельзя писать inline события, вот конструкция будет удобной.


Цитата(sergej @ 27.7.2005, 18:28)
Это глюк новой мозиллы до 1.0.4 (включительно) всё работает.

У меня тоже такое предчувствие было...

Цитата(sergej @ 27.7.2005, 18:28)
по соображением секьюрити

Странно, а где там может быть дыра в секьюрити... Вообще все траблы на мозилле 1.0.6, впервые так, что апдейтишся и после половина плагинов не работает и куча скриптов тоже. Раньше они хоть немного тестили перед релизом... smile



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
sergejzr
Дата 30.7.2005, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 10
Всего: 360



Мдя-.. видимо мозиловцы ставят нам подножку по отношению к генерации собсвенных событий...
Вот тут я с ними пытался дискутировать.
https://bugzilla.mozilla.org/show_bug.cgi?id=302546

Получается, что (так как dispatchEvent вызывается перед вызовом нашего листенера)

Добавлено @ 00:06
Мдя-.. видимо мозиловцы ставят нам подножку по отношению к генерации собственных событий...
Вот тут я с ними пытался дискутировать.
https://bugzilla.mozilla.org/show_bug.cgi?id=302546
  • Получается, что dispatchEvent вызывается перед вызовом нашего листенера. После однократного прохождение через dispatchEvent, событие становится read only.
    Значит менять браузерные события больше нельзя.
  • А самогенерированные можно, но браузер их проигнорирует.

Хороша петрушка, не правда ли? Посмотрим, чем закончится дискуссия, но у меня дурное предчувствие, что initKeyEvent можно забыть smile



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Sardar
Дата 30.7.2005, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Да, согласно DOM2 Event инициализировать событие нужно до его возбуждения. В обработчике событий событие уже возбужденно, initKeyEvent вызывать нельзя, что ставит крест на подходе к транслиту, на подмене кодов символов.

Тоже подумал что можно preventDefault() текущее событие и попытаться создать своё, которое инициализировать небоходимыми значениями и возбудить на текстовом поле. Код кидает исключение, по моему даже мозилловцы не смогут обьяснить зачем это было нужно smile В спецификации не стоит что запрещенно создавать и возбуждать события внутри обработчика другого события.

Ёлки не умно мозилловцы что то поступили smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
sergejzr
Дата 30.7.2005, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 10
Всего: 360



Цитата(Sardar @ 29.7.2005, 23:52)
Тоже подумал что можно preventDefault() текущее событие и попытаться создать своё, которое инициализировать небоходимыми значениями и возбудить на текстовом поле. Код кидает исключение, по моему даже мозилловцы не смогут обьяснить зачем это было нужно


Там в тикете я опубликовал второй пример, где исключение не кидается, но... там вступает в силу второй пункт:

самогенерированные keyevents браузер игнорирует smile

Вот оба примера:

Так мы раньше использовали initKeyEvent
Пример с самогенерированным событием.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Sardar
Дата 30.7.2005, 01:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(sergej @ 30.7.2005, 00:00)
самогенерированные keyevents браузер игнорирует

А у меня всё равно кидаються события на initKeyEvent, хотя обьект события был только что создан и не возбуждался, Mofilla Firefox 1.0.6


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
sergejzr
Дата 30.7.2005, 01:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 10
Всего: 360



Этот код тоже?
http://files.vingrad.ru/sergej.z/bugs/createevent.html

Странно.. У меня тоже 1.0.6. Исключений нет. Как впрочем и толку smile

Кстати, обрати внимание, как пришлось извратится, чтобы не попасть в вечную рекурсию smile


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Sardar
Дата 30.7.2005, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(sergej @ 30.7.2005, 00:43)
Странно.. У меня тоже 1.0.6. Исключений нет. Как впрочем и толку

Верно, я генерил Events, а не KeyEvents, потому initKeyEvent давало исключение в любом случае. Твой код "работает" без ошибок. Попробовал откладывать возбуждение на таймаут, без результатно.

Был на xulplanet.com, девелопеских страничках мозиллы, не пойму где взять полный список всех типов событий, что можно создать через createEvent. Пока опытным путём нашёл: Events, UIEvents, KeyEvents.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Ciber SLasH
Дата 16.3.2006, 02:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 24
Всего: 67



Интересно стало. smile
Так что, есть какое-нить решение создать своё событие?
Я вот выгуглил такой код:
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type='text/javascript'>
onload = function () {
    evt = document.createEvent('KeyEvents');
    //evt.initKeyEvent('keypress', true, true, window, false, false, false, false, 0, evt.DOM_VK_F11);
    evt.initKeyEvent("keypress", true, true, document.defaultView,
        evt.ctrlKey, evt.altKey, evt.shiftKey,
        evt.metaKey, 122, 122);
    evt.preventDefault();
    document.dispatchEvent(evt);
    //evt.target.dispatchEvent(evt);
}
</script>
</head>

<body>

</body>
</html>

но не работает, хотя ошибок в консоли FireFox не пишет, а Opera'тивная консоль говорит "Unhandled exception: [Object DOMException]" (по идеи должен был создаться ивент, который нажимает кнопку F11 для того, чтобы браузер переходил в полноэкранный режим).
PM   Вверх
Sardar
Дата 16.3.2006, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



А разве не ты сам отключил дефолтовое действие (разворот на fullscreen) строчкой evt.preventDefault(); ?
Также по моему в фуллскрин только сам пользователь перейти может, скриптами запрещено.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Ciber SLasH
Дата 16.3.2006, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 24
Всего: 67



А можно таким макаром нажать программно на Ctrl+U ?
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0809 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.