在iFrame内容高度更改时调整jQuery对话框div的大小,其中iFrame包含在对话框中

在iFrame内容高度更改时调整jQuery对话框div的大小,其中iFrame包含在对话框中,jquery,asp.net,jquery-ui,iframe,Jquery,Asp.net,Jquery Ui,Iframe,我有一个jquery对话框div。该div包含指向同一域上另一个ASP.Net页面的iFrame。iframe源页面还包含jquery accordion控件。每当打开对话框并展开/折叠accordion时,我都需要调整对话框的大小。目前,内容正在被截断。请再次注意,该对话框将手风琴包装在iframe中。我正在拼命工作。如果有人能解决这个问题,请帮我解决。 注意:所有内容都在同一个域中 已解决 请参见下面的答案。手风琴切换时,您需要让子iframe与父窗口对话 $yourAccordion.on

我有一个jquery对话框div。该div包含指向同一域上另一个ASP.Net页面的iFrame。iframe源页面还包含jquery accordion控件。每当打开对话框并展开/折叠accordion时,我都需要调整对话框的大小。目前,内容正在被截断。请再次注意,该对话框将手风琴包装在iframe中。我正在拼命工作。如果有人能解决这个问题,请帮我解决。 注意:所有内容都在同一个域中

已解决
请参见下面的答案。

手风琴切换时,您需要让子iframe与父窗口对话

$yourAccordion.on('open', function(e){
  if(window.top && window.top.resizeDialog)
     window.top.resizeDialog($(window).width(),$(window).height());
});
然后在父页面中,使用名为
resizeDialog

window.resizeDialog = function(w,h){
  $('#dialog').find('iframe').attr({
    width: w,
    height: h
  });
};

注意:您很可能需要考虑动画计时等。您还可以在jQuery
animate
方法的
步骤
函数中包含这一点,您可以使用该方法打开/关闭手风琴,使其更平滑。

解决方案适用于同一来源(即同一域)。如果您有权访问iframe源页面,请全局放置以下内联函数:

    var iFrameIdOnParentSelector = "#Replace_with_iframe_id_on_parent";
    var iFrameContentSelector = "#Replace_with_content_id_on_iframe_src_page";
    function fireiFrameResize(iFrameIdOnParentSelector, iFrameContentSelector) {
     var frame = $(iFrameIdOnParentSelector, window.parent.document);
     var height = jQuery(iFrameContentSelector).height();
     var width = jQuery(iFrameContentSelector).width();
     frame.height(height);
     frame.width(width);
    }
在手风琴通话中,添加
activate
属性。使用它触发
fireiFrameResize()
方法。该功能将在手风琴的每次展开和折叠上运行

     $("#accordionDiv").accordion({
      collapsible: true,
      active: false,
      heightStyle: "content",
      activate: function (event, ui) {
        fireiFrameResize(iFrameIdOnParentSelector, iFrameContentSelector);
      }
     });
在调用页面/控件上,iFrame控件所在的位置,将其高度和宽度设置为初始默认值。不要设置包含iframe的对话框高度和宽度。默认情况下,它将采用iframe高度和宽度。请注意以下事项:

  • 我的iframe是自定义用户控件中的服务器控件
  • 因为iframe在这里是一个服务器控件,所以我设置了
    clientdmode=“Static”
    。这避免了ASP.Net引擎创建运行时id

干杯。:)

请提供一些您拥有的代码示例tried@shanabus:请参见编辑。谢谢。我想知道为什么这个问题被否决了?完全正确,但在我的场景中无法实现。然而,我采用了另一种方法来实现它。检查我的解决方案。干杯。谢谢大家的努力。:)