在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>