bevor hier für die 1% IE8 die jQuery-Keule rausgeholt wird, hier mein addEvent:
Dann hat man einen Workaround für einen Bug im IE8, Crossbrowser-Kompatibilität erreicht man damit aber noch nicht. Man kann natürlich für jedes weitere Problem wieder eigene Workaround basteln, oder man greift in vorausschauender Weisheit auf fertige und vollständigere Lösungen zurück. jQuery ist da durchaus ein gangbarer Weg.
if(type.search("on")==0) type = type.substr(2);
Kennst du schon das online-Event? Was würde wohl passieren, wenn man folgendes macht?
addEvent(navigator,'online',onlineHandler);
Das schlimmste ist, dass nicht mal ein Laufzeitfehler geschmissen wird, es handelt sich also um einen Silent-Failure (das sind die schlimmsten). Die Zeile solltest du ersatzlos streichen, es widerspricht auch dem Single-Responsibility-Principle, die Funktion mehr als eine Aufgabe übernehmen zu lassen.