【问题标题】:How to resize iFrame via jQuery?如何通过 jQuery 调整 iFrame 的大小?
【发布时间】:2013-03-19 07:30:28
【问题描述】:

我一直在尝试使用来自here 的信息根据 iFrame 的内容调整其大小。他的演示位于here

我正在使用以下内容:

$("#IframeId").load(function() {
    $(this).height( $(this).contents().find("body").height() );
});

.find("body") 是否在内部 iframe 内容的标题部分检查“body”?我确实在托管页面中看到了这一点。

我还在上面的代码中添加了以下内容:

 alert($(this).height( $(this).contents().find("body").height()));

我没有看到警报。

【问题讨论】:

  • 您正在使用链接问题的问题的方法,而不是答案,该问题的开场白明确提到他的方法不起作用。你为什么不复制那里的答案中建议的解决方案之一?
  • 我已经更新了问题。
  • 查看这个问题的答案:stackoverflow.com/questions/701339/…
  • 让框架中的页面计算出它的高度,然后使用 postMessage 告诉父级。

标签: c# javascript jquery asp.net


【解决方案1】:

我认为您必须尝试在 IFrame 的源中查找特定元素的高度,而不是 html 标记本身,因为它没有指定的高度。这是一个工作示例:

$("#IframeId").load(function() {
    $(this).height( $(this).contents().find("#box").height() ); //box can be changed to the id of the element you want
});

如果您的容器 div 具有您希望 iframe 的宽度,则可以使用它的 id,而不是 box。 (注意:box 是this JsFiddle 示例中的主要元素的 id。)

【讨论】:

  • 谢谢。我没有看到我的警报在 iframe 负载中触发。它正在抓取一个带有 runat=server 属性的 HTML 元素,该元素在运行时会变成一些损坏的 ID。但是 $("#IframeId") 应该可以解决这个问题吗?
  • 我认为用于获取服务器控件引用的 jQuery 不正确。我把它放在警报中:$("#IframeId").attr('id')。它给出了一个未定义的。当我用损坏的 asp.net 生成的 ID 替换 #IframeId 时,我会在警报中看到该 ID。
  • $("#iframeid").attr('id') 正在做的是要求具有 id 为“iframeid”的元素。由于您很可能没有 id 为“iframeid”的元素,因此此代码返回未定义。如果您使用的是 Asp.NET 4.0,则可以将 ClientIDMode="Static" 添加到 iframe 上的属性中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-18
  • 2010-11-17
  • 2014-01-01
  • 2011-10-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多