Мой код работает хорошо в FF / Chrome / Все, кроме IE (не удалось в обоих 7/8, не потрудившись продолжить). Из-за ограничений я не могу использовать jQuery и жестко программирую Javascript. Проблема с IE, я получаю: «protectDefault - ноль или не объект». Надеюсь, у одного из вас есть ответ, и вот соответствующий код:
Метод AddEvent:
function addEvent( obj, type, fn ) {
if ( obj.attachEvent ) {
obj['e'+type+fn] = fn;
obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
obj.attachEvent( 'on'+type, obj[type+fn] );
} else
obj.addEventListener( type, fn, false );
};
Ошибка при обработке обработчика события:
function mousedown(e){
if(e.preventDefault){
e.preventDefault();
} else {
e.returnValue = false;
e.cancelBubble=true;
}
//Processing
};
Также DOCTYPE и charset устанавливаются на вызывающей HTML-странице. Любые идеи были бы хорошы. Ошибка выдается в операторе if для метода mousedown.
EDIT:
Из-за того, что захват window.event «исправил» основную проблему, я обнаружил, что проблема в другом разделе кода. По сути, я добавляю элемент поверх предварительно размещенного элемента, а затем регистрирую события mousedown / mousemove в этом div. При запуске события на <div>
, ТО, где выдается ошибка.
Может ли это быть что-то из-за того, что у меня есть события, зарегистрированные на 2
rect = document.createElement('div');
rect.className='square';
rect.id='chooser_rectangle';
rect.style.left=initx+'px';
rect.style.top=inity+'px';
addEvent(rect,"mousemove",mousemove);
addEvent(rect,"mousedown",mousedown);