2017-01-10 2 views
-4

Я видел некоторый код, как это:Является ли событие целевым объектом или строкой?

var targetElement = event.target || event.srcElement; 
if((targetElement == "IMG") 
{ 
    ... 
} 

Я всегда думал event.target является объектом, и мы должны использовать event.target.tagName, но как прийти event.target это строка тоже?

+0

Что заставляет вас думать, что это строка, основанная на том, что выглядит как недействительный код –

+0

Какие значения вы видите в браузерах, которые вы тестируете? [Документация Mozilla] (https://developer.mozilla.org/en-US/docs/Web/API/Event/target), похоже, указывает, что это всегда должен быть объект. Если 'target' не установлен, возможно, потому, что вы используете браузер с 20-го века, затем [' srcElement'] (https://msdn.microsoft.com/en-us/library/ff974945%28v=vs .85% 29.aspx? F = 255 & MSPPError = -2147217396) также должен быть объектом. Я думаю, что этот код просто ошибочен. – tadman

ответ

0

Это объект, конечно. Вы можете использовать == и свободно сравнивать его со строкой, но в чем смысл?

Если вы хотите проверить тип, используйте

event.target.tagName.toUpperCase() === "IMG" 

toUpperCase необходим, если документ может быть в XHTML.

Смежные вопросы