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