Наиболее очевидная вещь - это простая опечатка в следующей строке:
var key = e.keycode ? e.keycode : e.which;
Это должно быть keyCode
, а не keycode
.
Кроме этого, существуют проблемыв функции addEventHandler
.Я предлагаю следующее:
function addEventHandler(node,type,fn){
if (typeof node.addEventListener !== "undefined"){
/* DOM-compliant method */
node.addEventListener( type, fn,false );
} else if (typeof node.attachEvent !== "undefined") {
/* IE */
node.attachEvent( "on" + type, fn );
}
}
Две вещи: во-первых, лучше проверять attachEvent
напрямую, чем делать вывод о его существовании из существования window.event
.На самом деле, window.event
существует в Safari и Chrome, но не (я думаю) attachEvent
, так что хитрый вывод не позволяет вашему коду работать.
Во-вторых, лучше проверить стандарт DOM addEventListener
сначала и используйте его там, где он есть, а не attachEvent
.Опера, например, имеет оба, но только addEventListener
стандартизировано.