iframe onload-functie ongedefinieerd

Ik ben een Rails-applicatie aan het ontwikkelen. Een functie is klanten de mogelijkheid bieden om HTML-pagina's te bekijken. Ik laad deze previews in een IFRAME, zodat de CSS/styling van de preview-container gescheiden is van de CSS/styling van de preview zelf. Tot nu toe werkt dit vrij goed.

Een probleem dat ik ondervind, is het automatisch aanpassen van de IFRAME nadat deze is geladen. Ik heb dit geweldig in Chrome, gewoon door een functie toe te voegen aan de load -gebeurtenis van de IFRAME via jQuery:

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();
  });
});

Dit werkt echter niet erg goed in IE - de gebeurtenis lijkt niet te worden afgevuurd wanneer de pagina voor het eerst wordt geladen.

Een probleem dat ik probeer is om een ​​functie rechtstreeks toe te wijzen aan het onload -attribuut van de IFRAME, zoals zo:

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

Het probleem dat ik hier heb is dat de IFRAME de functie show_preview() niet kan vinden als deze is gedefinieerd in mijn JavaScript-bestand. Als ik de functie uitpak en in een SCRIPT-tag boven de IFRAME plaats, werkt alles goed.

Ik waardeer elke hulp - ik ben vast van plan iets te doen.

Max

2

1 antwoord

Bevestig uw functie aan het vensterobject, dan zal het zichtbaar zijn in uw html-code:

window.show_preview = function() { ... }
2
toegevoegd
Geweldig bedankt
toegevoegd de auteur maxenglander, de bron