iframe的onload函数未定义

4
我正在开发一个Rails应用程序。其中一个功能是提供客户预览HTML页面的能力。我将这些预览加载到IFRAME中,以便预览容器的CSS /样式与预览本身的CSS /样式分离。到目前为止,这个功能运作得非常好。
但是,我遇到的一个问题是在IFRAME加载完成后自动调整IFRAME大小。在Chrome中,我通过使用jQuery将函数附加到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>

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

非常感谢任何帮助 - 我确信我做了一些愚蠢的事情。

Max

1个回答

3
将您的函数附加到窗口对象上,然后它将在您的HTML代码中可见:
window.show_preview = function() { ... }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接