Просмотр полной версии : присвоение события
надо динамически присвоить событию onmouseover неких элементов функцию gg(event, this);
подскажите как это правильно делается.
element.onmouseover = function(event){
gg(event || window.event, this);
};
Sweet, а я вот давно хотел у кого-нибудь спросить, валидна ли вот такая конструкция?function gg()
{
// обработчик события от мыши на объекте
// this ... event... blablabla
};
element.onmouseover = gg;
trikadin
07.06.2011, 00:15
Валидный js... А имеет вообще смысл? Учитывая, что есть ie, в котором даже обработчики добавляются по-другому (я о attachEvent, господа), не говоря уже о выделениях, к примеру.
Или мы берём валидность отдельных участков кода?
Маэстро, конечно.
тогда зачем усложнять жизнь и передавать параметры функции
gg(event, this); ?
Маэстро, а как правильно тогда?
dmitriymar
09.06.2011, 22:52
Маэстро,
в 9 ие реализован addEventListener. так что можно говорить о начале перехода на один стандарт.так что возможно для более ранних версий появятся заплатки для этого дела
Маэстро, а как правильно тогда?
я не сказал, что Ваш вариант неправильный. но зачем же передавать параметр в функцию 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;
};
Маэстро,
в 9 ие реализован addEventListener. так что можно говорить о начале перехода на один стандарт.так что возможно для более ранних версий появятся заплатки для этого дела
"переход" может длиться 5-10 лет. те, кто привык использовать в IE attachEvent вместо addEventListener - так и будут его использовать. а вторая половина народа так и будет продолжать использовать прямое присвоение типа obj.onclick=gg;
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot