Struppi: nur array-kopie verändern

Beitrag lesen

if (typeof document.activeElement == "undefined" ....

activeElement ist entweder undefiniert oder ein object.

Es ist entweder oder definiert oder nicht. Das Gegenteil von 'undefined' ist nicht unbedingt 'object'.

Doch natürlich ist es das, es ist ein definierte Eigenschaft, die wenn sie existiert immer ein Objekt ist.

molily hat vermutlich Anfänger als Zielgruppe und wollte sie damit nicht überfordern. Und er hätte sicher lieber auf "object" getestet als auf "undefined",

das wäre Unsinn, entweder ist typeof undefiniert, dann wird diese Eigrnschaft von dem Browser nicht unterstützt oder es ist ein Objekt, dann wird sie unterstützt.

Du möchtest noch eine dritte Möglichkeit einführen, was nur verwirrend wäre. Denn dann wäre das gegenteil nicht mehr 100% wahr.

Verwirrend ist nur, dass man activeElement auch null zuweisen könnte und es wäre dann laut typeof noch immer ein Object, und trotzdem könnte man nicht damit arbeiten.

Du verstehst nicht - activeElement ist immer ein Objekt! Ausser wenn es der Browser nicht unterstützt.

Wenn man molilys Abfrage sicherer gestalten wollte, ..

Das müßte man machen, wenn der Wert für activeElement nicht per Definition immer ein Objekt wäre.

Man muss aber in dem Fall nur prüfen ob der Wert überhaupt definiert ist. Denn er will gar nicht auf die Eigenschaft zugreifen, sondern nur feststellen, ob die Funktionalität unterstützt wird. Und das wird signalisiert dadurch, dass typeof activeElement == 'object' ist. Wenn es nach dir ginge müßte man sowohl darauf, als auch auf null prüfen. Das kann man sich aber dank der genialen Definition (Null== obbject) sparen.

Struppi.