677 Stimmen

Aufrufen von JavaScript-Code in einem iframe von der übergeordneten Seite aus

Im Grunde habe ich eine iframe eingebettet in eine Seite und die iframe hat einige JavaScript Routinen, die ich von der übergeordneten Seite aus aufrufen muss.

Das Gegenteil ist ganz einfach, denn Sie brauchen nur die parent.functionName() aber leider brauche ich genau das Gegenteil davon.

Bitte beachten Sie, dass mein Problem nicht darin besteht, die Quelle zu ändern URL der iframe aber der Aufruf einer Funktion, die in der iframe .

4voto

Nitin Bansal Punkte 2874

Weiter mit JoelAnair's Antwort:

Für mehr Robustheit ist folgendermaßen vorzugehen:

var el = document.getElementById('targetFrame');

if(el.contentWindow)
{
   el.contentWindow.targetFunction();
}
else if(el.contentDocument)
{
   el.contentDocument.targetFunction();
}

Funktionierte wie ein Zauber :)

4voto

Santhanakumar Punkte 372

Wenn Sie die JavaScript-Funktion auf dem Parent aus dem iframe aufrufen wollen, der von einer anderen Funktion wie shadowbox oder lightbox erzeugt wird.

Sie sollten versuchen, folgende Möglichkeiten zu nutzen window Objekt und rufen die übergeordnete Funktion auf:

window.parent.targetFunction();

3voto

Dominique Fortin Punkte 2188

Nachfolgend die Antwort von Nitin Bansal

und für noch mehr Robustheit:

function getIframeWindow(iframe_object) {
  var doc;

  if (iframe_object.contentWindow) {
    return iframe_object.contentWindow;
  }

  if (iframe_object.window) {
    return iframe_object.window;
  } 

  if (!doc && iframe_object.contentDocument) {
    doc = iframe_object.contentDocument;
  } 

  if (!doc && iframe_object.document) {
    doc = iframe_object.document;
  }

  if (doc && doc.defaultView) {
   return doc.defaultView;
  }

  if (doc && doc.parentWindow) {
    return doc.parentWindow;
  }

  return undefined;
}

et

...
var el = document.getElementById('targetFrame');

var frame_win = getIframeWindow(el);

if (frame_win) {
  frame_win.targetFunction();
  ...
}
...

2voto

GeverGever Punkte 509
       $("#myframe").load(function() {
            alert("loaded");
        });

2voto

sangam Punkte 1444

Die gleichen Dinge, aber ein etwas einfacherer Weg wird sein Aktualisieren der übergeordneten Seite von einer Seite innerhalb eines iframe . Rufen Sie einfach die Funktion der übergeordneten Seite auf, um eine Javascript-Funktion zum Neuladen der Seite aufzurufen:

window.location.reload();

Oder tun Sie dies direkt auf der Seite im iframe:

window.parent.location.reload();

Beide Werke.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X