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-код. Великолепно работает перемещение в ФФ, а вот в Опере смещается только вправо и вниз. В чем проблема? В опере используются другие коды для клавиш? |
Ну так добавьте alert, посмотрите какой код клавиши показывает в Опере, неужто трудно догадаться?
|
Спасибо за совет! Но в том-то и дело, что показывает те клавиши, которые нужно. 37 и 38 соответственно.
|
Цитата:
Цитата:
|
Вот и я не понимаю. Действия по сдвигу противоположные клавишам вправо и вниз, а все равно не работает. Причем только в Опере не работают..
|
Вроде нашел неточность.
Когда нажимаю вправо - смещается на 2px, хотя var xLeft = $("div1").offsetLeft + 1; Когда нажимаю влево - смещается на 1px, если var xLeft = $("div1").offsetLeft - 2; |
MaxPayne, не работает потому что в опере оно уже занято, читай http://www.artlebedev.ru/tools/techn...ow-navigation/
там сделали для оперы Ctrl + Shift ... |
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;
}
|
Цитата:
element.onclick = function(event) {
if(typeof event == "undefined") {
event = window.event;
}
…
}
|
Не знал! Окей спасибо с ентим разобрался по ссылке тернарный оператор.
А можно еще про клавиши в ФФ? Пожалуйста прямо по скрипту. |
Цитата:
|
Я про свой скрипт.
|
Изменять контекстное меню в опере может разрешить только пользователь:
Инструменты → Настройки → Дополнительно → Содержимое → Настройки JavaScript → Позволит контролировать правую кнопку мыши. Пример со стрелками по ссылке работает в FF. |
Цитата:
element.onclick = function(event) {
event = event || window.event;
…
}
|
Цитата:
|
Kolyaj,
раз тернарный оператор не знаком человеку, думаю, такая штука: Цитата:
Цитата:
Цитата:
|
Цитата:
А пр.кл.мыши использовать в моем случае с рабочим конт.меню нет смысла. и Еще Разъесни пожалуйста
if (navigator.appName == "Opera")
{
document.onkeypress = f_KeyPress;
}
if (navigator.appName == "Netscape")
{
document.onkeydown = f_KeyPress;
}
if (navigator.appName == "Microsoft Internet Explorer")
{
document.onkeydown = f_KeyPress;
}
function f_KeyPress (event)
{
evt = (event.keyCode) ? event.keyCode : event.which;
if (evt == 1094 || evt == 38) {действие}
if (evt == 1099 || evt == 40) {действие}
if (evt == 1092 || evt == 37) {действие}
if (evt == 1074 || evt == 39) {действие}
}
1. Для чего event вводить в фунцию - function f_KeyPress (event) 2. И здесь в отличие от первого скрипта не работает ентот в IE? Для Опреы и IE использую разные события keyPress и keyDown соответственно т.к. заблокировать передвижение страницы клавишами стрелок в каждом браузере можно разными событиями с return false |
АААААААА понял что б в IE работало надо добавить
function f_KeyPress (event)
{
event = (event) ? event : window.event;
evt = (event.keyCode) ? event.keyCode : event.which;
if (evt
|
Цитата:
|
А вы не моглибы объяснить с точки зрения вызова функции типа:
если есть:
function ClickMyKey (key, key2) {}
то должен быть ее вызов: ClickMyKey (key, key2); Если я правильно понимаю то при выражении document.onkeypress = ClickMyKey; именно синтаксис языка подразумевает, данное событие передать в функцию обработчика? |
В W3C-модели событий в ClickMyKey первым аргументом будет передан объект "событие", в IE ничего не передается, в нем объект "событие" можно получить по ссылке window.event.
|
Ясненько боль маля. Спсб.
Маленькое отступление: где можно прочесть про то как учесть пользователей ONLINE. За ранее спасибо. |
Здравствуйте!
В Opera 10.53 стрелка вниз не работает. Все остальные стрелки работают нормально. Что бы получить keyCode 40 требуется зажать Alt+Ctr+вниз тогда keyCode отображается. Как можно выйти из этой ситуации. А мне нужно что бы скрипт именно реагировал на просто клавишу вниз.
this.keyControl = function(e, obj) {
if(this.isActive) {
var e = e || window.event;
alert(e.keyCode);
}
}
Очень странно, написал простенький скрипт, который почему то работает нормально в опере
document.onkeydown = function(e) {
var e = e || window.event;
alert(e.keyCode);
}
Придется разбираться :) Нашел в чем причина. Почему то на событие onkeyup e.keyCode 40 не выводится, а на onkeydown выводится :) Это глюк? |
Цитата:
|
для Tab в opera то же самое.
|
Цитата:
|
в jQuery tab на keyup ни в одном браузере не срабатывает.
|
Цитата:
Честно говоря вообще не сторонник этих библиотек! |
HelpeR, фреймворк не обязан предусматривать все случаи и подгадывать, что напишет скриптёр.
|
exec, вам не кажется, что по этой причине, легче написать свой скрипт, который работал бы в точности под ваши нужды, нежели загружать 30кб кода, а потом возиться с ним. Да конечно это не в каждом случае так. Согласен, что в некоторых случаях удобнее использовать именно эти библиотеки. Вам не кажется, что jQuery можно назвать новым языком программирования, который нужно учить? А не лучше ли выучить чистый js и творить, что душе угодно?!
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Цитата:
p.s. Фреймворк просто позволяет не решать еще раз проблемы, которые уже решили создатели фреймворка UPD. p.p.s. я бы сказал, что jQuery - скорее библиотека, чем фреймворк |
| Часовой пояс GMT +3, время: 15:12. |