【问题标题】:iframe onload function undefinediframe onload 函数未定义
【发布时间】:2011-10-27 19:03:25
【问题描述】:

我正在开发一个 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 标记中,一切正常。

感谢任何帮助 - 确定我在做一些愚蠢的事情。

最大

【问题讨论】:

    标签: javascript jquery ruby-on-rails iframe


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-08-21
      • 2013-03-30
      • 1970-01-01
      • 2012-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      相关资源
      最近更新 更多