Sharepoint 2010标准模型对话框打印透明与背景内容合并



在Sharepoint 2010中,默认情况下,你编辑的每个列表项都会在一个新的模型对话框中打开。

这个对话框显示为一个新的div,类为ms-dlgContent。它还创建了一个div,类ms-dlgOverlay作为一个灰色框来调暗背景。但是,它不会修改现有的保存背景内容的div,(在id为s4-workspace的div中找到)

当您打印带有对话框的页面时,对话框的背景和ms- dloverlaydiv将被忽略,因为背景不打印。这意味着对话框的字段与对话框后面页面的内容重叠,看起来很乱。

我有一个css页面设置打印,我想用隐藏的背景内容,当一个对话框存在。我可以在这个css表中设置div的样式为display:none,但是当且仅当出现对话框时,我找不到向s4-workspace元素添加类的方法。(如果没有对话框,我想打印s4-workspace元素)

我试着添加以下到我的主页,但它不工作。我猜这是因为对话框窗口不存在页面加载,我不知道如何让我的javascript运行时,一个对话框打开/关闭

<script type="text/javascript">
    jQuery(function() {
        jQuery("#s4-workspace").removeClass("backgroundOfDialog");
        //this should run if the ms-dlgContent class is found and do nothing otherwise
        jQuery(".ms-dlgContent").parent().children("#s4-workspace").addClass("backgroundOfDialog");
    });
</script>

我想我找到解决办法了…但这还远远不够理想。我每5秒检查一次页面,看看对话框的div是否存在:

<script type="text/javascript">
    jQuery(function() {
        setInterval(checkForDialog, 5000);
    });
    function checkForDialog()
    {
        var dialogDiv = jQuery(".ms-dlgContent");
        if(dialogDiv.length)
        {
            jQuery("#s4-workspace").addClass("backgroundOfDialog");
        }
        else
        {
            jQuery("#s4-workspace").removeClass("backgroundOfDialog");
        }
    }
</script>

最新更新