Вход

Просмотр полной версии : присвоение события


evgh
06.06.2011, 19:39
надо динамически присвоить событию onmouseover неких элементов функцию gg(event, this);
подскажите как это правильно делается.

Sweet
06.06.2011, 19:49
element.onmouseover = function(event){
gg(event || window.event, this);
};

Маэстро
06.06.2011, 19:55
Sweet, а я вот давно хотел у кого-нибудь спросить, валидна ли вот такая конструкция?function gg()
{
// обработчик события от мыши на объекте
// this ... event... blablabla
};

element.onmouseover = gg;

evgh
06.06.2011, 20:04
Sweet, спасибо

Sweet
06.06.2011, 21:46
Маэстро, конечно.

trikadin
07.06.2011, 00:15
Валидный js... А имеет вообще смысл? Учитывая, что есть ie, в котором даже обработчики добавляются по-другому (я о attachEvent, господа), не говоря уже о выделениях, к примеру.

Или мы берём валидность отдельных участков кода?

Маэстро
09.06.2011, 12:53
Маэстро, конечно.

тогда зачем усложнять жизнь и передавать параметры функции
gg(event, this); ?

evgh
09.06.2011, 22:35
Маэстро, а как правильно тогда?

dmitriymar
09.06.2011, 22:52
Маэстро,
в 9 ие реализован addEventListener. так что можно говорить о начале перехода на один стандарт.так что возможно для более ранних версий появятся заплатки для этого дела

Маэстро
10.06.2011, 12:31
Маэстро, а как правильно тогда?
я не сказал, что Ваш вариант неправильный. но зачем же передавать параметр в функцию this, если при вызове функции он и так доступен внутри функции? А вот с передачей параметра event в разных броузерах могут быть проблемы. причем это в зависимости от того, что Вы дальше с этим эвентом планируете делать. вообще для кроссбраузерности рекомендуется использовать вот такую функцию получения эвента:
function fixEvent(e)
{
e = e || window.event;

if (e.pageX == null && e.clientX != null)
{
var html = document.documentElement;
var body = document.body;
e.pageX = e.clientX + (html && html.scrollLeft || body && body.scrollLeft || 0) - (html.clientLeft || 0);
e.pageY = e.clientY + (html && html.scrollTop || body && body.scrollTop || 0) - (html.clientTop || 0);
}

if (!e.which && e.button)
e.which = e.button & 1 ? 1 : ( e.button & 2 ? 3 : ( e.button & 4 ? 2 : 0 ) );

return e;
};

Маэстро
10.06.2011, 12:35
Маэстро,
в 9 ие реализован addEventListener. так что можно говорить о начале перехода на один стандарт.так что возможно для более ранних версий появятся заплатки для этого дела
"переход" может длиться 5-10 лет. те, кто привык использовать в IE attachEvent вместо addEventListener - так и будут его использовать. а вторая половина народа так и будет продолжать использовать прямое присвоение типа obj.onclick=gg;