2017-10-18 5 views
1

Ich möchte Javascript im Kontext des übergeordneten Fensters (zum iframe) ausführen. Ich habe eine volle Kontrolle über den Iframe-Inhalt, kann aber Skripte nicht direkt im Elternfenster laden.Führen Sie das Skript im Kontext des übergeordneten Fensters

Anwendungsfall: Die übergeordnete Seite enthält Menüelemente, und basierend auf der Menüauswahl wird ein Iframe-Inhalt geladen. Ich muss ein Skript in den iframe laden und es im Kontext des Elternfensters ausführen, so dass es am Leben/persistent bleibt, selbst wenn ich durch den iframe navigiere. Gleiche Domain.

image

DOM Script Injektion funktioniert, aber ich frage mich, ob es eine bessere Lösung ist.

+0

upvoted für die Illustration. –

+0

So injizieren Sie das Skript in den Eltern – epascarello

+0

Skript Injektion funktioniert gut, aber ein Audit mag es nicht. Deshalb suche ich nach anderen Möglichkeiten (wenn es welche gibt) ... sogar komplex, aber ohne Skript-Injektion. –

Antwort

0

Nicht sicher, ob diese Lösung in Ihrem Fall Einschränkungen unterliegt. Versuchen Sie JS-Skript in Ihrem IFramed Inhalt zu laden:

<script src="iframed.js"></script>

und innerhalb von iframed.js:

// call function with context of parent window, and pass window and document as parameters. 
foo.call(window.parent, window.parent, window.parent.document); 

function foo(window, document) { 
    // now you can access all globals from the main window: 
    var target = document.getElementsByTagName('iframe'); 
    // logs collection of iframes from the main window: 
    console.log('iframes from main window:', target); 
    // global context is main window 
    console.log('global context: ', this); 
} 
Verwandte Themen