0

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

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

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

我有一个用于打印的 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>
4

1 回答 1

0

我想我想出了一个解决方案……但这远非理想。我每 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>
于 2013-04-02T21:17:05.877 回答