2010-12-17 6 views
2

Ich habe einen Rahmen, der eine Webanwendung enthält. Es erwartet, dass bestimmte JavaScript-Funktionen auf der Seite existieren, die es aufrufen kann. Wie kann ich diese JavaScript-Funktionen in den iframe von meiner übergeordneten Anwendung injizieren?injizieren Javascript in einen iframe für eine Portalanwendung

+2

Verstößt das nicht gegen die gleiche Ursprungsrichtlinie? – Robert

+0

@Robert Aber was, wenn beide Anwendungen auf der gleichen Domain laufen? Das verstößt nicht gegen die gleiche Ursprung-Richtlinie - http://en.wikipedia.org/wiki/Same_origin_policy#Origin_determination_rules –

Antwort

2

Ihre Frage ist ein wenig vage auf Details wie z. B. ob Sie den Inhalt innerhalb des Iframe steuern oder nicht. Es gibt jedoch eine Reihe von Möglichkeiten, um auf Javascript zwischen Frames zuzugreifen/es anzuwenden.

auf der Seite im iFrame enthalten:

parent.FunctionName(); 

Dies wird eine Funktion aufrufen, die innerhalb Ihrer Hauptseite existiert, die das iframe enthält.

Ähnlich:

YourIFrameName.FunctionName(); 

Wird von der übergeordneten Funktion in Ihrem iframe nennen.

Sie können die benötigten Javascript-Funktionen auch in eine .js-Datei packen. Und fügen Sie sie in den Header der Seite ein, die sie benötigt (den Iframe und/oder die Hauptseite).

Fügen Sie diese in Ihrem <head>:

<script type="text/javascript" src="YourJavascriptFile.js"></script> 

Wenn Sie jedoch, nicht den Inhalt kontrollieren und in den gleichen Ursprung Politik führen, haben Sie zwei Möglichkeiten:

1) Rethink Ihre Anwendung.

2) Eine praktikable Chaos: Sie wäre ein Skript aus dem iframe Anruf benötigen, die hat einige cURL Art Magie die Seite Inhalt der mitgelieferten Web-App zu ziehen, injizieren die benötigt Javascript und dann Ausgang der geänderte Inhalt in einer sinnvollen Weise.

Wenn Sie sich entschieden Sie die Route der # 2 gehen müssen, kann ich mit mehr Einzelheiten bearbeiten.

+4

Ich habe vor kurzem über diese # 2 Verwirrung gebloggt, wenn es hilft: http://benjaminlanders.com/solving -die-gleiche-Herkunft-Politik / –

0

Wie Robert erwähnte, ich denke, das verstößt gegen die gleiche Ursprungsrichtlinie in den meisten (wenn nicht allen) Browsern.

Alternativ, anstatt zu versuchen, die Funktionen in den Iframe zu injizieren, warum nicht den Iframe-Inhalt verweisen sie direkt von der Iframe Eltern?