Internet Explorer и JavaScript событие currentTarget - PullRequest
44 голосов
/ 13 мая 2009

Есть ли способ получить текущую цель события с помощью IE 7 или 8?

С другим браузером (Firefox, Opera, Chrome и т. Д.) Мы можем использовать event.currentTarget или также мы можем использовать ключевое слово this для обратитесь к объекту, обрабатывающему событие.

Но в Internet Explorer у нас нет свойства currentTarget, а this относится к объекту окна!

Так как я могу это сделать?

Ответы [ 13 ]

0 голосов
/ 14 августа 2013

ну, я не уверен, но это может быть решением: поскольку дочерний элемент, заданный srcElement, не должен иметь событие, потому что это создаст помехи событию в родительском элементе и ни в каком другом верхнем элементе перед верхним элементом, где находится оператор события (например, onmosedown = ""), поэтому код:

if (!event) event = window.event; 
if (event.currentTarget) element = event.currentTarget; 
else{element = event.srcElement; while(element.onmousedown==null) element = element.parentNode;}
if(element.nodeType==3) element=element.parentNode;  // defeat Safari bug

мне кажется, до сих пор это работает нормально, поправьте меня, если вы найдете проблему, потому что мне нужно решение для этого я не хочу использовать jquery ..

0 голосов
/ 11 июня 2013

Я бы хотел дать более простой ответ, мясо этого ответа совпадает с мясом ответов anas 'и user1515360:

if (browserDoesNotUnderstandCurrentTarget) {
        someElement.onclick = function (e) {
                if (!e) { var e = window.event; }
                e.currentTarget = someElement;
                yourCallback(e);
        }
}
else {
        someElement.onclick = yourCallback;
}

Замените на клик любое событие, которое вы хотите, конечно.

Это делает e.currentTarget доступным в браузерах, которые не поддерживают currentTarget.

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