![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
funasian |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 25.7.2005 Репутация: нет Всего: нет |
Вот есть такой код.
Хочу чтоб после загрузки в инпуте напечатолось abc. Неинтересуют примеры с value и innerHTML. Нужно чтобы было именно иметация нажатия клавиш от пользователя. |
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Копать в сторону DOM2 document.createEvent/element.dispatchEvent или IE document.createEventObject/element.fireEvent.
Первое найдёшь здесь: http://www.w3.org/TR/2000/REC-DOM-Level-2-...vents-interface Второе на MSDN: http://msdn.microsoft.com/workshop/author/...s/fireevent.asp -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
funasian |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 25.7.2005 Репутация: нет Всего: нет |
Пытался разобратся но ничего не получается.
Может какой-нить примерчик? ![]() |
|||
|
||||
funasian |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 25.7.2005 Репутация: нет Всего: нет |
Ещё вопрос.
Вот сдесь http://msdn.microsoft.com/library/default....turnvalue_1.asp написано что параметр event.ctrlKey можно читать и устанавливать.
Пишет ошибку "Член группы не найден". |
|||
|
||||
Sardar |
|
||||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
По идее вот так должно быть:
При этом чёрт его знает почему Мозилла кидает "NOT SUPPORTED" исключение. Думал потому что в событии onclick кнопки создаём, поставил на таймату, нет не пашет. Но по теории должно быть так как в примере. Для ИЕ всё работает, события зажигаються, НО текст в текстовое поле не добавляеться, и не знаю почему...
Просто у тебя обьект event не найден. У ИЕ свои тараканы ![]() -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
||||
|
|||||
funasian |
|
||||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 25.7.2005 Репутация: нет Всего: нет |
Вот именно что события срабатывают, но действия не выполняются.
Вот такой код по идее должен перейти на другую страницу. Событие onclick срабатывает, а действие не происходит.
Проверять то я его могу, значит event найден. |
||||
|
|||||
Sardar |
|
||||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Вообще это странно. Никогда мне не требовалось, потому обьяснить такое поведение(как ИЕ так и Мозиллы) не могу. Под ИЕ можно генерить любое событие и устанавливать обьекту события любые свойства.
В DOM2 можно создавать только специальные события, поддерживаемые платформой. Других ограничений не знаю. Под ИЕ должен быть механизм отвечающий за выполнение дефолтовых действий, вообще за это отвечает returnValue, но похоже ИЕ на свойство забил... Поищи на MSDN, я пока в затруднении ![]()
Потому как скрипт у тебя выполняеться во время загрузки, в этот момент обьект события null, проще говоря никаких осбытий не было. Убедись в этом написав alert(event), заменив: event.ctrlKey = true; В других местах, например в обработчике события event естественно существует. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
||||
|
|||||
funasian |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 25.7.2005 Репутация: нет Всего: нет |
Да искал я в MSDN, ничего путного нет.
![]()
Вот страница полностью загрузилась. Кликаем где угодно в теле. И получаем ошибку после алерта.
Кстати вот такой код работает. Заменяет при вводе * на точку.
Это сообщение отредактировал(а) funasian - 26.7.2005, 23:04 |
||||||
|
|||||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
В MSDN написанно "Sets or retrieves the state of the CTRL key.", проверяю твой код, не пашет. Поставил на таймаут, как и следует event=null, другие события(onkeydown, onkeypress) тоже не позволяют менять свойство.
У ИЕ такая ошибка возникает когда он не может найти геттера/сеттера свойства обьекта. Пиши MS, жалуйся что их дока ошибочна ![]()
Угу, так транслит на translit.ru работает. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
funasian |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 25.7.2005 Репутация: нет Всего: нет |
Получается что никак это сделать невозможно?
Может быть при вводе с клавы возникает ещё какое-то событие, которое не документированно. И оно разрешает показывать ту клавишу которую пытаешся сымитировать? Это сообщение отредактировал(а) funasian - 26.7.2005, 23:19 |
|||
|
||||
Sardar |
|
||||||||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Если поискать хорошо, может что нибудь найдёться. Я своим проектом занят, беглым взглядом по MSDN'ну ничего не нашёл.
Пробуем зажечь всю цепочку onkeydown, up, press.
У меня результат тот же, поле пустое. Добавлено @ 00:08 Интересно, попробовав такой изврат, получаю ошибку в 15 строке, поле keyCode только для чтения ![]()
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
||||||||
|
|||||||||
funasian |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 25.7.2005 Репутация: нет Всего: нет |
Хорошо. Пойдем от противного.
![]() Есть ли возможно перехватить полностью все события, не только те которые описаны. А полностью все и выводить их куда-то? То есть всех ементов и вывод что ето за евент. |
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
"Перехватить все события" можно если установить обработчиков событий на все события, иначе никак. А что ты понимаешь под "выводить" не понятно, можно например распечатать свойства обьекта события.
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
funasian |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 25.7.2005 Репутация: нет Всего: нет |
Я имею ввиду вот какой перехват. Это приблизительный код.
Вот что имелось ввиду. ![]() |
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 10 Всего: 360 |
Это глюк новой мозиллы до 1.0.4 (включительно) всё работает. Пока я тоже не нашёл хвостов, глюк это или фича ![]() Скорее всего отключили суппорт по соображением секьюрити, что так же означает, что придётся транслит переписывать через одно место, с гашением события и переписыванием value. Сардару: Кстати в новой мозилле по моему ещё больше глюков по событиям. Например горячие клавиши всё ещё передают события системе на моём компе... В старых версиях проверял, всё отлично работает... |
|||
|
||||
Sardar |
|
||||||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Нет, дефолтных событий нет на сколько я знаю. Есть у <script> аттрибут event/for, но конструкция по сути заменяет inline события для элементов. Удобная кстати штука, даже в HTML DOM от W3C вошла. Кстати в XHTML по моему нельзя писать inline события, вот конструкция будет удобной.
У меня тоже такое предчувствие было...
Странно, а где там может быть дыра в секьюрити... Вообще все траблы на мозилле 1.0.6, впервые так, что апдейтишся и после половина плагинов не работает и куча скриптов тоже. Раньше они хоть немного тестили перед релизом... ![]() -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
||||||
|
|||||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 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
Хороша петрушка, не правда ли? Посмотрим, чем закончится дискуссия, но у меня дурное предчувствие, что initKeyEvent можно забыть ![]() |
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Да, согласно DOM2 Event инициализировать событие нужно до его возбуждения. В обработчике событий событие уже возбужденно, initKeyEvent вызывать нельзя, что ставит крест на подходе к транслиту, на подмене кодов символов.
Тоже подумал что можно preventDefault() текущее событие и попытаться создать своё, которое инициализировать небоходимыми значениями и возбудить на текстовом поле. Код кидает исключение, по моему даже мозилловцы не смогут обьяснить зачем это было нужно ![]() Ёлки не умно мозилловцы что то поступили ![]() -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 10 Всего: 360 |
Там в тикете я опубликовал второй пример, где исключение не кидается, но... там вступает в силу второй пункт: самогенерированные keyevents браузер игнорирует ![]() Вот оба примера: Так мы раньше использовали initKeyEvent Пример с самогенерированным событием. |
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
А у меня всё равно кидаються события на initKeyEvent, хотя обьект события был только что создан и не возбуждался, Mofilla Firefox 1.0.6 -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 10 Всего: 360 |
Этот код тоже?
http://files.vingrad.ru/sergej.z/bugs/createevent.html Странно.. У меня тоже 1.0.6. Исключений нет. Как впрочем и толку ![]() Кстати, обрати внимание, как пришлось извратится, чтобы не попасть в вечную рекурсию ![]() |
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Верно, я генерил Events, а не KeyEvents, потому initKeyEvent давало исключение в любом случае. Твой код "работает" без ошибок. Попробовал откладывать возбуждение на таймаут, без результатно. Был на xulplanet.com, девелопеских страничках мозиллы, не пойму где взять полный список всех типов событий, что можно создать через createEvent. Пока опытным путём нашёл: Events, UIEvents, KeyEvents. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
Ciber SLasH |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: 24 Всего: 67 |
Интересно стало.
![]() Так что, есть какое-нить решение создать своё событие? Я вот выгуглил такой код:
но не работает, хотя ошибок в консоли FireFox не пишет, а Opera'тивная консоль говорит "Unhandled exception: [Object DOMException]" (по идеи должен был создаться ивент, который нажимает кнопку F11 для того, чтобы браузер переходил в полноэкранный режим). |
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
А разве не ты сам отключил дефолтовое действие (разворот на fullscreen) строчкой evt.preventDefault(); ?
Также по моему в фуллскрин только сам пользователь перейти может, скриптами запрещено. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
Ciber SLasH |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1813 Регистрация: 9.11.2004 Где: С.-Петербург Репутация: 24 Всего: 67 |
А можно таким макаром нажать программно на Ctrl+U ?
|
|||
|
||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |