Rufen Sie die übergeordnete Javascript-Funktion innerhalb eines Iframes auf

Lesezeit: 3 Minuten

Benutzer-Avatar
Ovi

Ich habe einen Iframe (in meiner Domain), dieser Iframe hat eine Datei iframe.js.

Mein übergeordnetes Dokument enthält eine Datei parent.js.

Ich muss eine Funktion aufrufen, die in ist parent.jsvon einer Funktion, die in ist iframe.js.

Ich habe versucht zu tun window.parent.myfunction() diese funktion ist in der parent.js Datei.

Aber es hat nicht funktioniert. Erst als ich die Funktion auf der übergeordneten Seite (ich meine im HTML) platziert habe, dann hat es funktioniert.

Irgendeine Idee, wie man das zum Laufen bringt?

  • bitte stellen Sie einige Ausschnitte zur Verfügung. Wie die Methoden deklariert werden und die Iframe-Konstellation.

    – jAndy

    3. August 2011 um 16:41 Uhr

Probieren Sie es einfach aus parent.myfunction(). Stellen Sie außerdem zu 100 % sicher, dass die parent.js in Ihrem übergeordneten Dokument enthalten ist.

  • funktioniert das in allen browsern und ist teil des javascript-standards?

    – somid3

    14. Juni 2012 um 15:29 Uhr

  • Es wurde in IE, Chrome und FF getestet. Ich bin mir nicht sicher, ob es in den Standards geschrieben ist oder nicht.

    – umgekehrter Speer

    14. Juni 2012 um 16:24 Uhr

  • Über ein Jahr später hilft er immer noch Menschen. Vielen Dank.

    – Fallenreaper

    9. August 2012 um 16:20 Uhr

  • @Fallenreaper – NP, darum geht es in dieser Community. Stolz, ein Teil davon zu sein.

    – umgekehrter Speer

    9. August 2012 um 16:46 Uhr

  • Die Verwendung von parent.function() funktioniert bei mir im IE nicht. Ich habe das gelöst, indem ich window.top davor verwendet habe. “window.top.function();”

    – Svenbjørn Kvilt Olsen

    1. Februar 2014 um 19:21 Uhr

Ich weiß, dass dies eine alte Frage ist, aber falls die akzeptierte Antwort nicht funktioniert (sie hat bei mir nicht funktioniert), können Sie dies in parent.js tun

window.myfunction = function () {
   alert("I was called from a child iframe");
}

Jetzt können Sie aus dem Iframe aufrufen meinefunktion() wie du es ursprünglich wolltest

window.parent.myfunction(); 

  • Guter Trick! Das funktioniert tatsächlich. Ich bin mir nicht sicher, was der Unterschied zwischen “window.myfunction = function()” und “function myfunction()” ist. Irgendeine Idee?

    – Milacay

    27. Juli 2016 um 21:06 Uhr


Benutzer-Avatar
Andrii Verbytskyi

Window.postMessage() Methode sicher ermöglicht cross-origin Kommunikation.

Wenn Sie Zugriff auf die übergeordnete Seite haben, können alle Daten übergeben und jede übergeordnete Methode direkt aufgerufen werden Iframe.

Übergeordnete Seite:

if (window.addEventListener) {
    window.addEventListener("message", onMessage, false);        
} else if (window.attachEvent) {
    window.attachEvent("onmessage", onMessage, false);
}

function onMessage(event) {
    // Check sender origin to be trusted
    if (event.origin !== "http://example.com") return;

    var data = event.data;      
    if (typeof(window[data.func]) == "function") {
        window[data.func].call(null, data.message);
    }
}

// Function to be called from iframe
function parentFuncName(message) {
    alert(message);
}

Iframe-Code:

window.parent.postMessage({
    'func': 'parentFuncName',
    'message': 'Message text from iframe.'
}, "*");

Verweise:

  • 1up für die Erwähnung von Cross Origin und einer gut akzeptierten Lösung

    – Fr0zenFyr

    6. Mai 2017 um 5:24 Uhr

  • Dies ist eine der größten Codierungsmethoden

    – Mimouni

    17. Dezember 2020 um 16:11 Uhr

  • Es eignet sich hervorragend für die Kommunikation zwischen iFrames, die Sie für Seiten auf anderen Domains öffnen, ursprungsübergreifende Kommunikation, so wie sie ist

    – espajava

    7. April 2021 um 10:40 Uhr

1216900cookie-checkRufen Sie die übergeordnete Javascript-Funktion innerhalb eines Iframes auf

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy