如何动态自动调整sharepoint模式对话框的大小?

如何动态自动调整sharepoint模式对话框的大小?,sharepoint,Sharepoint,我已经在sharepoint中创建了一个web应用程序,它有一个登录链接,单击该链接可在模式窗口中加载登录web部件。我没有设置模式弹出选项的高度,但只设置了其宽度 IE 7、8和9根据我的需要加载Web部件,并在加载时自动调整其高度。但是Firefox(Chrome中的din not test)会加载该Web部件,但不会自动调整高度以适应登录WP 我尝试使用SP.UI.ModalDialog.get_childDialog().autoSize(),如下所示 ExecuteOrDelayUnt

我已经在sharepoint中创建了一个web应用程序,它有一个登录链接,单击该链接可在模式窗口中加载登录web部件。我没有设置模式弹出选项的高度,但只设置了其宽度

IE 7、8和9根据我的需要加载Web部件,并在加载时自动调整其高度。但是Firefox(Chrome中的din not test)会加载该Web部件,但不会自动调整高度以适应登录WP

我尝试使用SP.UI.ModalDialog.get_childDialog().autoSize(),如下所示

ExecuteOrDelayUntilScriptLoaded(function () {
SP.UI.ModalDialog.get_childDialog().autoSize();
}, "sp.ui.dialog.js");
但这也不适用于Firefox。当我在登录屏幕上显示错误时,在IE中调用autoSize非常有效,但在FF上,它返回的高度小于20px,并且模式弹出窗口似乎有一个宽度,但其高度小于20

我如何解决这个问题

请帮忙

对不起,如果我看起来像个傻瓜


提前感谢

我认为您需要在创建对话框之前设置属性autoSize

var options = SP.UI.$create_DialogOptions();
options.autoSize = true;
...
SP.UI.ModalDialog.showModalDialog(options);

希望这能有所帮助。

我自己也正试图解决一个类似的问题。我想覆盖宽度,因为我的内容以不希望的行为包装。我发现以下内容允许我在显示对话框后调整宽度

ExecuteOrDelayUntilScriptLoaded(function () {
  var dialog = SP.UI.ModalDialog.get_childDialog();
  dialog.$2_0.autoSizeStartWidth = 1100;
  dialog.autoSize();
}, "sp.ui.dialog.js");

我刚刚将它添加到脚本编辑器Web部件中,作为显示表单部件的一部分,它的工作方式就像做梦一样。

我也有类似的问题,但由于某些原因autoSize()对我不起作用,所以我开始挖掘,并使用jQuery编写了调整模式窗口显示后高度的变通方法

var dlg = SP.UI.ModalDialog.get_childDialog();
var header = $(dlg.$I_0)
var userRoot = $(dlg.$L_0);
var frameContainer = $(dlg.$1Z_0);

var headerContentHeight = header.height();
var headerMargin = header.cssUnit("margin")[0] * 2;
var headerPadding = header.cssUnit("padding")[0] * 2;
var headerHeight = headerContentHeight + headerMargin + headerPadding;
var frameContainerPadding = Math.ceil(($(dlg.$7_0).height() - userRoot.height() - headerHeight) / 2);

//frame container
$(dlg.$1Z_0).height(height - headerHeight - frameContainerPadding);

//background white space
$(dlg.$4_0).height(height);

//border
$(dlg.$1H_0).height(height);

//root of user html
userRoot.height(height - headerHeight - frameContainerPadding);

//frame
$(dlg.$7_0).height(height);

//center the window
$('.ms-dlgContent').css('top', $(window).scrollTop() + ((($(window).height() - $('.ms-dlgContent').height()) / 2) - 30) + "px");
请记住,窗口的实际高度大于对话框选项中的高度。此函数将设置对话框窗口的实际高度以匹配新高度


也许这个解决方案可以帮助其他有这个问题的人。这都是在修改样式,所以这应该不是一个问题,但这是一种“黑客”行为,因此可能会有问题。

您的web部件是否有高度定义?没有。。它不。。我只设定了宽度。高度是根据模态popupno中加载的内容自动选择的。当我签入Firebug时,它的高度是8px或其他什么。8px是ms dlgContent的高度?您的弹出页面是否包含名为“s4 ribbonrow”和“s4 workspace”的类?@1问题:10px是ms dlgContent的高度,其余div的高度是8px。@2问题:是的,s4 ribbonrow被设置为“无显示”,而s4 workspace被设置为“无显示”高度为8px的显示块。