molily: window.onblur & window.onfocus

Beitrag lesen

Hallo,

Du weißt doch sicher um den Unterschied zwischen Eigenschaft und Methode. Selbstverständlich hat das window-Objekt eine Methode focus, aber keine Eigenschaft, ergo wird deine Abfrage immer false ergeben.

Das ist falsch.
Methoden sind in JavaScript nichts anderes als spezielle Eigenschaften des Typs function. Sie verhalten sich in jeder Hinsicht wie Eigenschaften und können auch so angesprochen werden. Wenn eine Methode namens focus beim window-Objekt existiert, kann man über window.focus das entsprechende Function-Objekt ansprechen. Und also prüfen, ob eine solche Methode existiert. alert(window.focus); geht, if (window.focus) geht also auch. if (window.focus == true) ist identisch. Der einzige Unterschied zu Eigenschaften eines anderen Typs ist die interne [[Call]]-Methode, sodass man die Methode als Funktion über Funktionsname(Argumentliste) aufrufen kann.
Wenn man eigene globale Funktionen mit function bla () {} notiert, kommt auch nichts anderes als eine Eigenschaft des Typs function (= Methode) beim window-Objekt heraus (window.bla).

Mathias