Iframe-Onload-Funktion undefiniert

Ich entwickle eine Rails-Anwendung. Eine Funktion besteht darin, Kunden die Vorschau von HTML-Seiten zu ermöglichen. Ich lade diese Vorschau in ein IFRAME, so dass das CSS/Styling des Vorschaucontainers vom CSS/Styling der Vorschau selbst getrennt ist. Bis jetzt funktioniert das ziemlich gut.

Ein Problem, das ich habe, ist die automatische Größenanpassung der IFRAME nach dem Laden. Ich habe das großartig in Chrome funktioniert, nur indem ich eine Funktion an das Ereignis load des IFRAME über jQuery angehängt habe:

var show_preview = function() {
  $("#preview-loading").hide();
  $(this).show();
  this.style.height = this.contentWindow.document.body.scrollHeight + "px";
  return this.style.width = this.contentWindow.document.body.scrollWidth + "px";
}

$(function() {     
  return $("#preview_frame").load(function() {
    show_preview();
  });
});

Dies funktioniert jedoch im IE nicht sehr gut - das Ereignis scheint nicht ausgelöst zu werden, wenn die Seite zum ersten Mal geladen wird.

Ein Workaround, den ich versuche, ist, dem Attribut onload des IFRAME eine Funktion direkt zuzuweisen:

 <iframe onload="show_preview();" ...></iframe>

Das Problem, das ich hier habe, ist, dass IFRAME die Funktion show_preview() nicht finden kann, wenn sie in meiner JavaScript-Datei definiert ist. Wenn ich die Funktion extrahiere und sie in ein SCRIPT-Tag über dem IFRAME setze, funktioniert alles einwandfrei.

Schätze jede Hilfe - sicher, dass ich etwas mit Knochen mache.

Max

2

1 Antworten

Hängen Sie Ihre Funktion an das Fensterobjekt an, dann wird es in Ihrem HTML-Code sichtbar:

window.show_preview = function() { ... }
2
hinzugefügt
Cool, danke
hinzugefügt der Autor maxenglander, Quelle
JavaScript - Deutsche Gemeinschaft
JavaScript - Deutsche Gemeinschaft
3 der Teilnehmer

In dieser Gruppe sprechen wir über JavaScript.