3 заметки с тегом

event РСС

18 октября 2009, 8:38

Javascript: bind keyboard

Забиндить клаву можно через DHTML параметр тэга onkeydown или onkeyup
<body onkeydown="displayKeyCode(event)">
В саму функцию displayKeyCode мы отправляем событие тэга (боди или импута), и дальше мы с него вынимаем код клавиши
charCode = (evt.which) ? evt.which : event.keyCode;
Строку с кода можно взять через стандартную функцию
String.fromCharCode(charCode);
У нас же есть ещё модификаторы, для них есть отдельный метод, но и по одиночке они отдают код тоже
evt.altKey
evt.ctrlKey
evt.shiftKey
Вот по сути и всё, код клавиш мы знаем, из кода получить символ можем, остаётся только глянуть в действии



event

28 мая 2009, 18:28

Context menu (right-click) on JavaScript

Для работы нам нужны 3 функции:
// Инициализация переменных
// Положение мыши
var mouse = {"x":0,"y":0};

// Дистанция до правого-нижнего края
var distance = {"right" : 0, "bottom" : 0};

// Обьект, который будет выскакивать как меню
var contextmenu = null;

// при загрузке страници, инициализируем ивенты
addGenericEvent(window,'load',onstart);


function onstart() { // биндим обьект меню contextmenu = $('thecontextmenu'); // перехватываем мышку addGenericEvent(document,'mousemove',mousemove); // при клике где либо на странице, прячем меню addGenericEvent(document,'click',hide_contextmenu); }
// функция которая покаызвает меню function show_contextmenu(event) { // выбираем координаты положения меню // +30 исправляем длину offsetWidth для всех кроме ИЕ о_О // +2 если курсор слишком близок к правому или нижнему краю if (distance.right < contextmenu.offsetWidth + (!window.event ? 30 : 0)) // Если очень близко к правому краю, // размещаем слева от указателя мыши contextmenu.style.left = 2 + mouse.x - contextmenu.offsetWidth+"px"; else contextmenu.style.left = mouse.x+"px"; if (distance.bottom < contextmenu.offsetHeight) // Если очень близко к нижнему краю, // размещаем сверху над указателем мыши contextmenu.style.top = 2 + mouse.y - contextmenu.offsetHeight+"px"; else contextmenu.style.top = mouse.y+"px"; // показываем меню contextmenu.style.visibility = "visible"; // улавливаем ивент когда пользователь // любит клацнуть много раз по правой кнопке try {window.getSelection().collapseToStart();} catch (e) {} // прячем правое меню браузера event.cancelBubble = true; // и другие ивенты на клик правой кнопкой if (event.stopPropagation) event.stopPropagation(); if (event.preventDefault) event.preventDefault(); return false; }
function hide_contextmenu() { contextmenu.style.visibility = "hidden"; // прячем меню над мышкой, что бы лишнее // пространство внизу страници не появлялось у ИЕ contextmenu.style.top = (mouse.y - contextmenu.offsetHeight) + "px"; }
function mousemove(e) { // параметры окна браузера // высота, ширина виевпорта и скролов var wnd = getWindowSizes(); // Ловим положение курсора if (e.clientX) // Moz mouse = { "x": e.clientX + wnd.sx, "y": e.clientY + wnd.sy}; else if (window.event) // IE mouse = { "x": window.event.clientX + wnd.sx, "y": window.event.clientY + wnd.sy}; // считаем растояния к правому-нижнему углу distance.right = wnd.w - (mouse.x - wnd.sx); distance.bottom = wnd.h - (mouse.y - wnd.sy); }


event

14 декабря 2008, 15:07

Add Generic Event (crossbrowser)

function addGenericEvent(source, trigger, func) {
  if (source.addEventListener) {
  	source.addEventListener(trigger,func,false);
  } else if (source.attachEvent) {
  	source.attachEvent("on"+trigger,func);
  }
}
source — window or document
trigger — any DHTML event widthout on (onLoad — load, onClick — click)
func — name of fucntion widthout any parameters, and brackets
event   javascript