2009-03-08 4 views
1

Ich habe ein gerahmtes Fenster (derzeit Iframe aber möglicherweise Rahmen) - Ich habe keine Kontrolle über diese.Zugriff Eltern über DOM von Skript in einem iframe in IE Mobile

Ich möchte erkennen, ob mein Inhalt in einem Iframe (oder Frame) ist.

Ich wollte die Position des aktuellen Dokuments mit der vergleichen, die das oberste Objekt enthält, aber es scheint, es ist das gleiche Objekt (oben === Fenster).
Nach umfangreichen googeln I dieser IEMobile blog entry bekam und in einer der Kommentare gibt es diese Antwort:

iemoblog sagte:

Nein, Sie Skript einen beliebigen Teil des DOM Eltern nicht zugreifen können in einem iframe in IE Mobile.
20. Dezember 2007 12.12

ich keine Dokumentation darüber zu finden scheinen kann - jeder kann dies dazu beitragen, bestätigen oder noch besser - deuten auf eine Art und Weise zu erkennen, ob die Seite „eingerahmt“ ist?

Antwort

2

Als ich kam nicht überall nach den Kommentar verfasst zu finden, in der IE Mobile blog (von Charles Morris - Programm-Manager auf dem IE Mobile-Team, auf seinem eigenen Beitrag) Ich bin gezwungen, diese Antwort zu addieren und sie angeben, ist:

Wie gestaltet (oder zumindest ein Bug)

prc sagte:

in Bezug auf Iframe-Unterstützung: Ich kann erstellen einen iframe, aber bin nicht in der Lage "nach draußen" den Rahmen. "top" und "Eltern" scheinen beide nur auf der iframe selbst und nicht die oberste Vorfahren oder unmittelbaren Vorfahren wie die Dokumentation schlägt vor, dass es sollte. Gibt es eine Möglichkeit, JavaScript Variablen im umschließenden Dokument aus einem Iframe beziehen?

19. Dezember 2007 09.29

iemoblog sagte:

Nein, Sie keinen Teil des DOM Eltern zugreifen können aus Skript in einem Iframe in IE Mobile.

20. Dezember 2007 12.12 Uhr

2

Das Hauptproblem ist, dass, wenn der Frame aus einer anderen Domäne als der Container ist, Ihr JavaScript Sandboxed ist und nicht auf den anderen Frame/Container zugreifen kann.

Was Sie tun können, ist versuchen, window zu window.top zu vergleichen und die möglichen Ergebnisse sind: 1. Die gleich sind -> Sie sind das oberste Fenster auf der Seite 2. Sie sind nicht gleich -> Sie sind Nicht das oberste Fenster auf der Seite, es gibt eine Containerseite in derselben Domäne wie Sie, die Ihr Fenster als Rahmen oder Iframe enthält. 3. Eine Sicherheitsausnahme wird ausgelöst -> Sie sind nicht das oberste Fenster auf der Seite, aber das oberste Fenster stammt aus einer anderen Domäne und Sie können nicht darauf zugreifen.

vielleicht so etwas wie folgt aus:

try { 
    if (window == window.top) 
    return "I'm parent"; 
    else 
    return "I'm a child of " + window.top.location; 
} catch (e) { 
    return "I'm a child of something from another domain"; 
} 
+0

Danke für die Anregung, leider funktioniert es nicht auf dem iemobile ich zu Test verwenden (Samsung Omnia). – Dror

+0

Was ist das Problem, das Sie damit haben? – Guss

+0

Es hat so lange gedauert, bis ich geantwortet habe. Ich möchte meinen Inhalt in einem Rahmen "ungeboxt" halten. Das Ausführen des bereitgestellten Codes erkennt das "Boxen" meines Inhalts in einem Frame nicht. Der Code funktioniert für jeden anderen Browser. – Dror