Das ist schnell zu erklären. Sollte es tatsächlich ein parent geben, das nicht von meinem Server kommt (also ein "feindliches" parent), DARF ich nicht auf die location zugreifen. Das verbietet mir (verständlicherweise) das Javascript.
Wenn man diesen Zugriff nämlich tätigt, gibt es ja zwei Möglichkeiten:
a.) ich darf darauf zugreifen => das parent ist von meinem Server
b.) ich darf nicht zugreifen => das parent ist NICHT von meinem Server
Leider erzeugt b.) aber einen Fehler. Also registriert man einfach einen Error-Handler, der diesen Fehler dann empfängt, so dass man dann weiter arbeiten kann. Wenn man nämlich diesen Fehler nicht abfängt, wird jegliche Bearbeitung des Javascripts abgebrochen, so dass ich dann also zwar ermitteln kann, dass b.) zutrifft, aber keine weiteren Massnahmen treffen kann.
Leider gestattet mir mein Opera nicht, diesen Fehler über onError abzufangen, so dass ich mit try catch anrücken muss.
In einem Crossbrowser-kompatiblen Skript muss mal also sowohl die onError also auch die try-catch Schiene fahren..