Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.02.2010, 16:17
Новичок на форуме
Отправить личное сообщение для Voblasoul Посмотреть профиль Найти все сообщения от Voblasoul
 
Регистрация: 27.02.2010
Сообщений: 5

Комбинация ctrl+влево или вправо не работают корректно в Опере
День добрый!
Озадачился тут проблемой навигацией по нажатию клавиш.
Проблема такая, по нажатию ctrl + клавиша влево или вправо, выполняется переход по галерее картинок назад или вперёд соответственно.
Код:
var KeyBoardNav = function(e){
     if (e.ctrlKey){
            if( e.which == 37 ) {            
                var url = jQuery("#photo_links div.item:eq(0) a:lt(1) ").attr("href");
                var id = url.match(/\/photos\/(\d+)\/.*/);
                
                if( id ){
                    url = "http://photosightlocal" + url;
                    window.location = url;
                }
                alert(url);
            }else if (e.which == 39 ){
                var url = jQuery("#photo_links div.item:eq(1) a:lt(1)").attr("href");
                var id = url.match(/\/photos\/(\d+)\/.*/);
                
                if( id ){
                    url = "http://photosightlocal" + url;
                    window.location = url;
                }
                alert(url);
            }
        }
     }    
   
    document.onkeydown = KeyBoardNav;

всё это потом кладётся в jQuery(document).ready.
Firefox, chrome работает на ура. В опере проблемы.
Если я закоменчиваю alert(url); то Опера начинает воспринимать это сочетание клавиш как свои, т.е. она включает свою навигацию по истории. Куда копать?
Ответить с цитированием
  #2 (permalink)  
Старый 27.02.2010, 16:25
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 09.07.2008
Сообщений: 3,873

В Opera нужно нажимать Ctrl + Shift + →
Ответить с цитированием
  #3 (permalink)  
Старый 27.02.2010, 16:28
Новичок на форуме
Отправить личное сообщение для Voblasoul Посмотреть профиль Найти все сообщения от Voblasoul
 
Регистрация: 27.02.2010
Сообщений: 5

Спасибо, но это не решение моей проблемы.
Ответить с цитированием
  #4 (permalink)  
Старый 27.02.2010, 20:03
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

onkeydown > onkeypress ?
Ответить с цитированием
  #5 (permalink)  
Старый 28.02.2010, 15:49
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Гхмм… Мне лично и e.preventDefault() хватило.
Ответить с цитированием
  #6 (permalink)  
Старый 01.03.2010, 08:33
Новичок на форуме
Отправить личное сообщение для Voblasoul Посмотреть профиль Найти все сообщения от Voblasoul
 
Регистрация: 27.02.2010
Сообщений: 5

Сообщение от subzey Посмотреть сообщение
Гхмм… Мне лично и e.preventDefault() хватило.
Не помогает.

Вообще, я наверно не правильно вопрос поставил. Главный вопрос, это можно ли заставить оперу, не использовать свои горячие клавиши, т.е. чтобы она выполнила js и всё. Алерты видимо как раз останаливают её выполнять действие горячих клавиш, но понятно что это не вариант. Нажатие дополнительно к нужной комбинации shift'а, как посоветовал товарищ Octane, видимо выполняет похожую функцию, т.е останавливает оперу от выполнения горячих клавиш, но это снова не вариант, не будем же мы под каждый браузер свои комбинации делать..
Ответить с цитированием
  #7 (permalink)  
Старый 01.03.2010, 08:41
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 09.07.2008
Сообщений: 3,873

То есть пользователи Opera привыкли нажимать горячие клавиши на сайтах через Shift, а вы им: "Ну уж нет, сделаем по моему, чтобы было везде одинаково". Там любой accesskey так работает, или, например, перемещение по ссылкам выполняется при помощи Shift+стрелки.
Сообщение от Voblasoul
не будем же мы под каждый браузер свои комбинации делать..
Всего лишь надо добавить в подсказку "Shift+", никаких других изменений не требуется.

Ох уж эта Opera…
Ответить с цитированием
  #8 (permalink)  
Старый 01.03.2010, 09:07
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Странно. Опера стабильная, 10.10 под виндами; обработчик вешаю на document, по событию keypress. Убиваются все действия по-умолчанию, включая рефреш через f5.
Ответить с цитированием
  #9 (permalink)  
Старый 01.03.2010, 09:41
Новичок на форуме
Отправить личное сообщение для Voblasoul Посмотреть профиль Найти все сообщения от Voblasoul
 
Регистрация: 27.02.2010
Сообщений: 5

Сообщение от subzey Посмотреть сообщение
Странно. Опера стабильная, 10.10 под виндами; обработчик вешаю на document, по событию keypress. Убиваются все действия по-умолчанию, включая рефреш через f5.
Сочетание ctrl+стрелки тоже убиваются?
Ответить с цитированием
  #10 (permalink)  
Старый 01.03.2010, 11:46
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

document.addEventListener("keypress", function(e){
	if (!e.ctrlKey || e.keyCode > 40 || e.keyCode < 37) return;
	switch (e.keyCode){
		case 37:
			window.status = "Ctrl ←";
		break;
		case 38:
			window.status = "Ctrl ↑";
		break;
		case 39:
			window.status = "Ctrl →";
		break;
		case 40:
			window.status = "Ctrl ↓";
		break;
	}
	e.preventDefault();
}, false);

Works fine for me.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск