Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.04.2009, 21:56
Аватар для MaxPayne
Аспирант
Отправить личное сообщение для MaxPayne Посмотреть профиль Найти все сообщения от MaxPayne
 
Регистрация: 11.04.2009
Сообщений: 39

keyCode charCode
function keymove(event) 	     
{
if (event.preventDefault) {
event.preventDefault();
event.stopPropagation();
} else {
event.returnValue = false;
event.cancelBubble = true;
}

event = (event) ? event : window.event; // IE
if (event)
{ 		 			
if ($("div1")) 			
{ 				

начальные координаты объекта
			 
var code = (event.charCode) ? event.charCode : event.keyCode;
switch(code) 				
{ 					
case 37: 						
сдвиг влево // не работает в Опере
break; 					
case 38: 						
сдвиг вверх // не работает в Опере
break; 					
case 39:
сдвиг вправо // работает в Опере
break;
case 40:
сдвиг вниз // работает в Опере
break;
}
}
}
return false
}

document.onkeypress = keymove;


Есть JS-код. Великолепно работает перемещение в ФФ, а вот в Опере смещается только вправо и вниз. В чем проблема? В опере используются другие коды для клавиш?
Ответить с цитированием
  #2 (permalink)  
Старый 27.04.2009, 22:29
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Ну так добавьте alert, посмотрите какой код клавиши показывает в Опере, неужто трудно догадаться?
Ответить с цитированием
  #3 (permalink)  
Старый 27.04.2009, 22:59
Аватар для MaxPayne
Аспирант
Отправить личное сообщение для MaxPayne Посмотреть профиль Найти все сообщения от MaxPayne
 
Регистрация: 11.04.2009
Сообщений: 39

Спасибо за совет! Но в том-то и дело, что показывает те клавиши, которые нужно. 37 и 38 соответственно.
Ответить с цитированием
  #4 (permalink)  
Старый 27.04.2009, 23:33
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от MaxPayne
сдвиг влево
Здесь ошибки нет.
Сообщение от MaxPayne
сдвиг вверх
Здесь тоже. Не понимаю, что не работает.
Ответить с цитированием
  #5 (permalink)  
Старый 28.04.2009, 10:05
Аватар для MaxPayne
Аспирант
Отправить личное сообщение для MaxPayne Посмотреть профиль Найти все сообщения от MaxPayne
 
Регистрация: 11.04.2009
Сообщений: 39

Вот и я не понимаю. Действия по сдвигу противоположные клавишам вправо и вниз, а все равно не работает. Причем только в Опере не работают..
Ответить с цитированием
  #6 (permalink)  
Старый 28.04.2009, 10:12
Аватар для MaxPayne
Аспирант
Отправить личное сообщение для MaxPayne Посмотреть профиль Найти все сообщения от MaxPayne
 
Регистрация: 11.04.2009
Сообщений: 39

Вроде нашел неточность.
Когда нажимаю вправо - смещается на 2px, хотя
var xLeft = $("div1").offsetLeft + 1;
Когда нажимаю влево - смещается на 1px, если
var xLeft = $("div1").offsetLeft - 2;
Ответить с цитированием
  #7 (permalink)  
Старый 27.06.2009, 12:11
Новичок на форуме
Отправить личное сообщение для Crec Посмотреть профиль Найти все сообщения от Crec
 
Регистрация: 27.06.2009
Сообщений: 2

MaxPayne, не работает потому что в опере оно уже занято, читай http://www.artlebedev.ru/tools/techn...ow-navigation/

там сделали для оперы Ctrl + Shift ...
Ответить с цитированием
  #8 (permalink)  
Старый 23.09.2009, 23:09
Кандидат Javascript-наук
Отправить личное сообщение для MininAS Посмотреть профиль Найти все сообщения от MininAS
 
Регистрация: 22.09.2009
Сообщений: 122

1. event = (event) ? event : window.event;
пожалуйста разжуйте мне это действо!

2. Ты пытаешься двигать предмет какой-нибудь?
..у меня в опере работают все стрелки..

3. А вот в ФФ нихренюшиньки не пойму как клавиши оживить
и в опере не работает правая кнопка мыши нивкакую.

if (navigator.appName == "Opera") 
{
document.oncontextmenu = new Function("[I]действие не работает[/I]; return false");
document.onkeypress = f_KeyPress;
}
if (navigator.appName == "Netscape") 
{
document.oncontextmenu = new Function("[I]действие[/I]; return false");
document.onkeyup = new Function("alert (event.keyCode);"); [I]// не работает[/I]
}
if (navigator.appName == "Microsoft Internet Explorer") 
{
document.oncontextmenu = new Function("[I]действие[/I]; return false");
document.onkeydown = f_KeyPress;
}

function f_KeyPress ()
{
	if (event.keyCode == 1094 || event.keyCode == 38) действие;
	if (event.keyCode == 1099 || event.keyCode == 40) действие;
	if (event.keyCode == 1092 || event.keyCode == 37) fдействие;
	if (event.keyCode == 1074 || event.keyCode == 39) действие;
	return false;
}

Последний раз редактировалось Octane, 23.09.2009 в 23:14. Причина: используйте теги [html] и [js] для оформления кода. Подробнее здесь: http://javascript.ru/formatting
Ответить с цитированием
  #9 (permalink)  
Старый 23.09.2009, 23:21
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от MininAS
event = (event) ? event : window.event;
Что не понятно, тернарный оператор не знаете, или не понятно зачем это действие? В IE в функцию-обработчик события не отправляется, в качестве 1-го аргумента, объект-событие, поэтому забираем его из глобального контекста. Можно записать так:
element.onclick = function(event) {
    if(typeof event == "undefined") {
          event = window.event;
    }
    
    …

}

Последний раз редактировалось Octane, 23.09.2009 в 23:29.
Ответить с цитированием
  #10 (permalink)  
Старый 23.09.2009, 23:37
Кандидат Javascript-наук
Отправить личное сообщение для MininAS Посмотреть профиль Найти все сообщения от MininAS
 
Регистрация: 22.09.2009
Сообщений: 122

Не знал! Окей спасибо с ентим разобрался по ссылке тернарный оператор.

А можно еще про клавиши в ФФ? Пожалуйста прямо по скрипту.

Последний раз редактировалось MininAS, 23.09.2009 в 23:52.
Ответить с цитированием
Ответ



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

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