window.event
- это не значение данных, а функция получения для создания объектов событий. Так же, как большинство
из свойств DOM являются не значениями данных, а функциями доступа.
Вы даже можете делать их рядом друг с другом:
div.onclick = function() {
var a = window.event;
var b = window.event;
alert( a === b ) // false
};
В любом случае, просто сделайте свою собственную функцию:
window.getEvent = (function() {
var e = {};
return function() {
var cur = window.event;
if( cur.type === e.type &&
cur.srcElement === e.srcElement &&
cur.clientX === e.clientX &&
cur.clientY === e.clientY &&
cur.keyCode === e.keyCode ) {
return e.evt;
}
e.type = cur.type;
e.srcElement = cur.srcElement;
e.clientX = cur.clientX;
e.clientY = cur.clientY;
e.keyCode = cur.keyCode;
e.evt = cur;
return cur;
};
})();
myinnerdiv.onclick = function () {
var event = getEvent();
event.myCustomProp = 3;
};
myparentdiv.onclick = function () {
var event = getEvent();
alert( event.myCustomProp === 3 );
};
Предполагается, что этих 5 значений достаточно, чтобы увидеть, представляют ли объекты события одно и то же событие, что мне кажется разумным.
Тестовая страница здесь , точно нажмите текст «asd» (красного цвета), так как html:
<div id="myparentdiv">
daa
<div id="myinnerdiv">asd</div>
daa
</div>
Если вы хотите что-то, что работает наверняка, тогда просто используйте jQuery, вам, в основном, нужно создать целую модель событий с нуля.
чтобы сделать это более четко (и всегда использовать API этой модели событий).