Всем привет!
Такая проблема, почему-то не работает detachEvent в IE7/8.
Вот скрипты в порядке подключения
var EventHandler = {
add: function(element, eventType, handler){
if(element.addEventListener){
element.addEventListener(eventType, handler, false);
return handler;
}
var IEhandler = function(){handler.call(element);}
element.attachEvent("on"+eventType, IEhandler);
return IEhandler;
},
remove: function(element, eventType, handler){
if(element.addEventListener){
element.removeEventListener(eventType, handler, false); return;
}
element.detachEvent("on"+eventType, handler);
}
}
Дальше
EventHandler.add(window, "load", js1func);
function js1func(){
var div = document.getElementById("div1");
EventHandler.add(div, 'click', viewDiv1);
}
function viewDiv1(event){
var div = document.getElementById("div1");
EventHandler.remove(div, 'click', viewDiv1);
var evt = event || window.event
var str = "<h3>THIS:</h3>";
for(z in this){
str += z +' => '+ this[z] +"<br />";
}
str += "<h3>EVENT:</h3>";
for(z in evt){
str += z +' => '+ evt[z] +"<br />";
}
div.innerHTML = str;
}
И HTML страничка
Код:
|
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Обработчик событий</title>
<style type="text/css">
#div1, #div2{float: left; width: 50%;}
</style>
<script type="text/javascript" src="eventHandler.js"></script>
<script type="text/javascript" src="js1.js"></script>
<!--<script type="text/javascript" src="js2.js"></script>-->
</head>
<body>
<div id="div1">DIV 1</div>
<div id="div2">DIV 2</div>
<script type="text/javascript">
</script>
</body>
</html> |
Во всех браузерах все работает. То есть после загрузки страницы я кликаю по DIV1, в него загружается результат работы функции viewDiv1() и эта же функция снимает обработчик. То есть дальше DIV1 уже не реагирует на клики. Но вот в IE7/8 подписка на onclick не снимается, почему?