Hallo,
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'. Man könnte activeElement auch vorher einen String zugewiesen haben oder NaN oder sowas und hätte dann ein Problem.
Dieselbe Unsicherheit hat man mit der üblichen Abfrage der Existenz eines Objekts:
if (document.activeElement) ...
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", was aber wegen der möglichen null bei typeof leider nicht zu empfehlen ist :(.
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.
Wenn man molilys Abfrage sicherer gestalten wollte, müsste man entweder notieren:
if (typeof document.activeElement == "object" && document.activeElement !== null....
oder etwas einfacher:
if (document.activeElement && typeof document.activeElement == "object") ...
Beides wäre aber identisch mit
if (typeof document.activeElement == "object") ...
(also noch einfacher), wenn typeof null == 'null'
gelten würde,
was zu beweisen war :P
Gruß, Don P