我在sharepoint中创建了一个Web应用程序,该应用程序有一个登录链接,可以在点击时在模态窗口中加载登录webpart。我还没有通过选项设置模态弹出的高度,但我只设置了它的宽度。
IE 7,8和9根据我的需要加载webpart,并在加载时自动调整其高度。但Firefox(在Chrome中进行测试)会加载webpart,但不会自动调整高度以适应登录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。
如何解决此问题?
请帮忙。
很抱歉,如果我看起来像个菜鸟那么。
提前致谢
答案 0 :(得分:1)
我认为您需要在创建对话框之前设置属性autoSize :
var options = SP.UI.$create_DialogOptions();
options.autoSize = true;
...
SP.UI.ModalDialog.showModalDialog(options);
希望这有帮助。
答案 1 :(得分:0)
我本人正试图解决一个类似问题。我想覆盖宽度,因为我的内容包含在一个不受欢迎的行为中。我发现以下内容允许我在显示对话框后调整宽度。
ExecuteOrDelayUntilScriptLoaded(function () {
var dialog = SP.UI.ModalDialog.get_childDialog();
dialog.$2_0.autoSizeStartWidth = 1100;
dialog.autoSize();
}, "sp.ui.dialog.js");
我刚将它添加到脚本编辑器webpart中,作为显示表单部分的一部分,它就像一个梦想。
答案 2 :(得分:0)
我有类似的问题,但由于某种原因,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");
请记住,窗口的实际高度大于对话框选项中的高度。此函数将设置对话框窗口的实际高度以匹配新高度。
也许这个解决方案可以帮助其他人,解决这个问题。这都是修改样式,因此它不应该是一个问题,但它是一种" hack"所以它可能是错误的。