Установка событий динамически - PullRequest
1 голос
/ 06 февраля 2010

У меня есть эта функция, которую я вызываю onload:

function InitAll(){
   document.getElementById("div1").onmouseover = function(){Foo(event,this);};
   document.getElementById("div1").onmouseout  = function(){Foo(event,this);};
}

function Foo(e, handler){    
   document.getElementById("label1").innerHTML=e.type;
}

В IE это работает, и я получаю правильный e.type, но в Firefox нет:

событие не определено

Но если я устанавливаю события статически, например:

<div id="div1" onmouseover="Foo(event,this);" onmouseout="Foo(event,this);" >

работает для обоих браузеров.

Что мне не хватает? какое-то закрытие?

1 Ответ

2 голосов
/ 06 февраля 2010

Попробуйте взять объект события в качестве аргумента и заменить его на window.event, если он нулевой.

function InitAll(){
   document.getElementById("div1").onmouseover = function(e){
      e = e || window.event;
      Foo(e,this);
   };
 ...
}

Хотя, если честно, я бы посмотрел на использование jQuery или какого-либо другого фреймворка для всего этого. В большинстве случаев нет смысла изобретать велосипед. Я мог бы сделать это при написании собственного фреймворка, но в большинстве случаев вы сэкономите время и головные боли с помощью фреймворка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...