Iframe onload函数未定义



我正在开发Rails应用程序。其中一个特性是为客户提供预览HTML页面的能力。我在IFRAME中加载这些预览,以便预览容器的CSS/样式与预览本身的CSS/样式分离。到目前为止,这工作得很好。

我遇到的一个问题是一旦加载IFRAME就自动调整大小。我有这个工作伟大的Chrome只是通过附加一个函数到IFRAME的load事件:

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

这在IE中并不能很好地工作,然而-当页面第一次加载时,事件似乎没有被触发。

我正在尝试的一个解决方案是将函数直接分配给IFRAME的onload属性,如下所示:

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

我在这里遇到的问题是IFRAME找不到show_preview()函数,如果它是在我的JavaScript文件中定义的。如果我提取函数并将其放在IFRAME上方的SCRIPT标记中,则一切正常。

感谢你的帮助-我肯定是在做一些愚蠢的事情。

马克思

将函数附加到window对象上,然后它将在html代码中可见:

window.show_preview = function() { ... }

最新更新