Hallo Leute,
ich möchte die Frame-Hierarchie einer Webseite in ein Javascript-Objekt speichern. Dazu ermittle ich von meiner aktuellen Position aus erst den Top-Frame und gehe von da aus Rekursiv durch die ganzen Kinder, sodass ich unabhängig von der Struktur der Frames, die komplette Hierarchie abbilden kann.
Nun habe ich Probleme mit Frames, die externe URLs laden. Dass ich da keinen Zugriff drauf habe (Same Origin Policy) ist mir klar, nur wie kann ich erkennen, dass es sich um ein solches handelt?
Greife ich auf das Window-Objekt des externen Frames selbst zu, funktioniert dies. Sobald ich aber auf eine Eigenschaft dieses Objekts zugreife, bricht alle mit einer Fehlermeldung ab. Ich habe also keine Möglichkeit zu erkennen, ob es extern ist oder nicht.
Meine Funktion sieht wie folgt aus:
Code:
function check_frames(frame, parent_id) {
infos[parent_id+'_'+id] = {url:frame.location.href};
parent_id = id;
id++;
if(frame.frames.length) {
for(var i = 0; i < frame.frames.length; i++)
check_frames(frame.frames[i], parent_id);
}
}
check_frames(top_frame, 'top');
Es wird immer die URL gespeichert. Der Name der Eigenschaft besteht aus der Eltern-ID und der eigenen ID, um die Hierarchie abzubilden.
Dann wird geschaut, ob Kind-Frames vorhanden sind und die Funktion mit dem Kind-Frame aufgerufen.