iframe onload函数未定义

时间:2011-10-27 19:03:25

标签: javascript jquery ruby-on-rails iframe

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

我遇到的一个问题是在加载IFRAME后自动调整大小。我只是通过jQuery将函数附加到IFRAME的load事件,这在Chrome中运行得很好:

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标记中,一切正常。

感谢任何帮助 - 确保我做的事情很糟糕。

最高

1 个答案:

答案 0 :(得分:2)

将您的函数附加到窗口对象,然后它将在您的html代码中显示:

window.show_preview = function() { ... }
相关问题