2017-01-10 7 views
-4

sah ich einige Code wie folgt aus:Ist das Ereignis ein Objekt oder eine Zeichenfolge?

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

Ich dachte immer, event.target ein Objekt ist, und wir sollten event.target.tagName verwenden, aber wie kommt event.target auch eine Zeichenfolge ist?

+0

Was lässt Sie glauben, dass es sich um eine Zeichenfolge handelt, die auf ungültigem Code basiert? –

+0

Welche Werte sehen Sie in den Browsern, mit denen Sie testen? Die [Mozilla-Dokumentation] (https://developer.mozilla.org/en-US/docs/Web/API/Event/target) scheint darauf hinzuweisen, dass dies immer ein Objekt sein sollte. Wenn 'target' nicht gesetzt ist, vielleicht weil Sie einen Browser aus dem 20. Jahrhundert verwenden, dann [' srcElement'] (https://msdn.microsoft.com/en-us/library/ff974945%28v=vs .85% 29.aspx? F = 255 & MSPPError = -2147217396) sollte ebenfalls ein Objekt sein. Ich denke, dass dieser Code einfach falsch ist. – tadman

Antwort

0

Es ist natürlich ein Objekt. Sie können == verwenden und locker mit einer Zeichenfolge vergleichen, aber was ist der Sinn?

Wenn Sie die Art zu überprüfen, verwenden Sie

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

toUpperCase benötigt wird, wenn das Dokument in XHTML sein könnte.

Verwandte Themen