Hallo,
bisher war für solch groben Unfug wie "Seite zu den Favoriten hinzufügen" oder "zur Startseite machen" window.external das ideale[tm] Prüfobjekt
Zu den Favoriten hinzufügen geht mit window.external.AddFavorite, wieso soll dann window.external das ideale Prüfobjekt sein? window.external.AddFavorite wäre das ideale Prüfobjekt gewesen. Von window.external auf window.external.AddFavorite zu schließen, ist zwar naheliegend, aber letztlich unsauber. Eine - wenn auch zunächst überkorrekt scheinende - Objektabfrage kann dies verhindern.
Nun, ich konnte das Problem beheben, indem ich die Prüfung durch "if (UserAgent.isIe())" ersetze
Was ist gegen if (window.external && window.external.AddFavorite) einzuwenden?
Schließlich geht es nicht darum, IE-User zu veralbern, sondern um die Fähigkeit, eine Seite zur Browser-Startseite zu machen.
Das ist eine andere Geschichte. »Zur Startseite hinzufügen« läuft so ab:
Ein Element bekommt .style.behavior = 'url(#default#homepage)' und dann wird dessen Methode setHomePage ausgeführt.
Ergo, window.external hat damit nichts zu tun. Man kann z.B., wie Siechfred sagt, prüfen, ob .style.behavior existiert (d.h. ein leerer String ist oder eben undefined). Danach kann man noch, bevor der Link überhaupt auftaucht, prüfen, ob die Methode setHomePage existiert.
Mathias