4

我在 sharepoint 中创建了一个 Web 应用程序,它有一个登录链接,单击时会在模式窗口中加载登录 webpart。我没有设置模式弹出选项的高度,但我只设置了它的宽度。

IE 7、8 和 9 根据我的需要加载 web 部件,并在加载时自动调整其高度。但是 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 上它返回的高度小于 20 像素,并且模式弹出窗口似乎有一个宽度,但它的高度小于 20。

我该如何解决这个问题?

请帮忙。

对不起,如果我看起来像个菜鸟。

提前致谢

4

3 回答 3

3

我只是想自己解决一个类似的问题。我想覆盖宽度,因为我的内容包含在不受欢迎的行为中。我发现以下允许我在显示对话框后调整宽度。

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

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

于 2017-11-16T18:44:54.527 回答
1

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

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

希望这可以帮助。

于 2013-01-13T12:07:11.853 回答
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");

请记住,窗口的实际高度大于对话框选项中的高度。此函数将设置对话窗口的实际高度以匹配新高度。

也许这个解决方案可以帮助遇到这个问题的其他人。这都是在修改样式,所以这应该不是问题,但它是一种“黑客”,所以它可能是错误的。

于 2017-11-29T16:00:40.393 回答