![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
Burrr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 4.9.2005 Репутация: 10 Всего: 20 |
Задача, обработать нажатие Ctrl+S в браузере. Для этого необходимо отменить дефолтное действие браузера: вылезание диалога о сохранении страницы + выполнить свою функцию.
Написал следующее:
В ИЕ работает на ура! А вот в ФФ и Опере появление алерта сопровождается появлением браузерного окна сохранения. Помогите, плз, пофиксить! |
|||
|
||||
dstorm81 |
|
|||
![]() бездельник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1178 Регистрация: 18.1.2006 Где: (16RU) Репутация: 20 Всего: 39 |
2 уважаемый Burrr
походу дела, кроссбраузерно это никак не прокатит (осел исключение из правил) ибо Горячие клавиши ловятся хуками системы. И выполняющиеся скрипты тут ничего не поделают. Они могут ловить нажатия и обрабатывать по-своему, но запретить их обработку приложением (в данном случае браузером) они не могут. -------------------- на форуме с 8.12.2002 (http://forum.vingrad.ru/index.php?act=ST&f=10&t=4874&st=0#) |
|||
|
||||
Burrr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 4.9.2005 Репутация: 10 Всего: 20 |
dstorm81, есть пример работоспособности такого скрипта в Гекко.
В почте gmail такая фича прокатывает и в ФФ, то есть при написании письма можно нажать СTRL+S, при этом письмо сохраняется по AJAX и диалог не появляется. Интересно, как они заблочили окно диалога. В кода гмейловой почты разбираться бесполезно, если кто не пробовал - можете попытаться. |
|||
|
||||
Avb |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 5.7.2006 Репутация: 4 Всего: 13 |
Burrr, недавно реализовывал подобную вещь.
Пришел к такому выводу: Чтобы иметь возможность остановить поведение браузера по умолчанию при нажатии hot keys, необходимо обработчик навешивать не с помощью addEventListener/attachEvent, а как свойство document. Причем для ИЕ и Webkit-а - onkeydown, а для остальных - onkeypress.
P.S. Prototype.Browser.IE = !!(window.attachEvent && !window.opera); Prototype.Browser.WebKit = navigator.userAgent.indexOf('AppleWebKit/') > -1; P.P.S. Я пользую: var key = event.keyCode || event.which; Это сообщение отредактировал(а) Avb - 8.10.2007, 10:47 |
|||
|
||||
dstorm81 |
|
|||
![]() бездельник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1178 Регистрация: 18.1.2006 Где: (16RU) Репутация: 20 Всего: 39 |
только что заркгился на мыле
пытаюсь ответить на 1 письмто то которое от [email protected]> нажимаю на ctrl+s выходит окно сохранения документа мой браузер k-meleon может пожелеешь пользователей и не будешь их лишать привычных раостей, забинди на ctrl+enter к примеру -------------------- на форуме с 8.12.2002 (http://forum.vingrad.ru/index.php?act=ST&f=10&t=4874&st=0#) |
|||
|
||||
Burrr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 4.9.2005 Репутация: 10 Всего: 20 |
Avb, спасибо за полмощь! Пара поправок:
0) НЕ работает в Гекко :( Фаер просто кажет диалог сохранения.... 1) Моя функция добавляет обработчики событий (мало ли, а то вдруг там еще чего повесили для обработки клавиш), а document.onkeypress || document.onkeydown стирает старые, что плохо. На практике разницы между 2-мя подходами не обнаружил. НО, зато заработало в Опере! УРА! Пока финальный код такой:
dstorm81, k-meleon - какой-то КДЕшный обозреватель? Тогда не знаю работает ли там сохранение в ГМЭЙЛ. Одно скажу точно - в ФФ работает! А насчет пользователей. Эта штука пишется для админки, где измененные данные будут уходить по AJAX-у. Для таких целей фича очень полезная... |
|||
|
||||
Burrr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 4.9.2005 Репутация: 10 Всего: 20 |
Решил привязать сохранение к сочетанию shift + S:
Но если подскажите как окно сохранения заблокировать в Гекко, буду крайне благодарен! Это сообщение отредактировал(а) Burrr - 8.10.2007, 15:40 |
|||
|
||||
Avb |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 5.7.2006 Репутация: 4 Всего: 13 |
Возможно. Я ctrl+s не проверял. Я использовал сочетания ctrl+1, ctrl+2 и т.д. В ФФ по умолчанию - это переключение между табами. Так вот пока я использовал addEventListener и моя функция отрабатывала, и табы переключались. Когда сделал так как описал выше, табы переключаться перестали. Burrr, попробуйте так как я описал. Хотя бы ради интереса. И отпишите, плиз, что получилось. |
|||
|
||||
Burrr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 4.9.2005 Репутация: 10 Всего: 20 |
Avb, ессно попробовал, но к сожалению без результата. Поэтому в конечном счете остановился на своем более "мягком" варианте добавления обработчика события.
Спасибо за помощь! +1 |
|||
|
||||
Avb |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 5.7.2006 Репутация: 4 Всего: 13 |
Burrr, нет уж, так легко Вы от меня не отделаетесь.
![]() Как я уже писал, чтобы остановить стандарное поведение ФФ нужно использовать onkeypress, а он в onkeypress на нажатие s возвращает код не 83, а 115. С кодом 115 в ФФ работает. Только что проверял. Добавлено @ 16:12 Вот использую этот код для тестов (по-моему я его здесь на форуме и взял, немного подредактировав):
Это сообщение отредактировал(а) Avb - 8.10.2007, 16:13 |
|||
|
||||
Burrr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 4.9.2005 Репутация: 10 Всего: 20 |
Avb, браво!
Получилось! Кроссбраузерный вариант (проверено в ИЕ6, ФФ1.5, НН7.1, Опера7.1, Опера9.1 - всё win):
Спасибо тебе огромное, человечище! ![]() Если не сложно - проверьте под МАКом и Линуксом... |
|||
|
||||
Avb |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 5.7.2006 Репутация: 4 Всего: 13 |
||||
|
||||
Burrr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 459 Регистрация: 4.9.2005 Репутация: 10 Всего: 20 |
||||
|
||||
Fubu_By |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 290 Регистрация: 14.2.2007 Репутация: нет Всего: 0 |
а как отключить кнопку "просмотр исходного кода"?
|
|||
|
||||
Egor__ |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 4.10.2006 Репутация: нет Всего: нет |
подскажите почему не работают обработчики для IE :
<input name="e" type="button" value="вызов addEventListener" onmouseover="status='Переход к карте сайта' return true;" onmouseout="status='false'; return false;"> исходный: <form name="m"> <input name="e" type="button" value="вызов addEventListener" > Для оперы <p></p> <input name="e" type="button" value="вызов addEventListener" onmouseover="status='Переход к карте сайта' return true;" onmouseout="status='false'; return false;"> Для IE <p></p> </form> <script> function w(){status='Переход к карте сайта'; return true;} function q(){status='false'; return true;} m=document.m; m.addEventListener("mouseover", w, true); m.removeEventListener("mouseout", q, true); </script> |
|||
|
||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |