4

クリック時にモーダル ウィンドウにログイン Web パーツをロードするサインイン リンクを持つ SharePoint で Web アプリケーションを作成しました。オプションでモーダル ポップの高さを設定していませんが、幅のみを設定しています。

IE 7、8、および 9 は、必要に応じて Web パーツを読み込み、読み込み時に高さを自動的に調整します。ただし、Firefox (Chrome ではテストしていません) は 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 未満です。

この問題を解決するにはどうすればよいですか?

助けてください。

私が初心者のように見えたらごめんなさい。

前もって感謝します

4

3 に答える 3

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 に答える