隐藏SharePoint User Profile页面中的提示文本
3 min read

隐藏SharePoint User Profile页面中的提示文本

在SharePoint 2010的User Profile页面中存在一些提示,本文的内容就是如何去掉这些提示而又不影响其他功能,这是一件简单而又意义不大的事情,但我却不小心想复杂了,前后花了几个小时,用jQuery写了几行代码,中间还发现bug修改了一遍,终于发现走了弯路,用区区3行CSS搞定。

首先是“标签和注释”页面(thoughts.aspx)中的提示文本,位于标签云的下方,如图所示:

image

最下面几行提示文本的标签既没有id也没有class,还好标签云是有class的,可以用它来定位到之后的元素,并将其隐藏,只需一句Style:

.ms-TagCloud.ms-socialThoughtBoxTags ~ div {display:none;}

其中~表示“之后的所有元素”,IE6不支持这个选择器,不过没关系,SharePoint 2010 不支持IE6。

接着是“概述”页面(person.aspx)的记事板提示文本,这段提示文本是通过AJAX技术动态填充的,仅在没有Notes的情况下显示(包括将Notes全部删除之后)。

没有Notes时的样子:

image

有Notes时的样子:

image

这段提示文本的标签也没有id和class,而且多层嵌套,可以依靠有class的分页元素(“上一步”和“下一步”的功能居然是为Notes翻页,我还以为是引导提示文本的向导按钮)来定位它。值得注意的是提示文本和Notes位于同一个div中,但结构却大相径庭,还好Notes的元素具有id,所以可以先将该层的所有div隐藏,然后再将具有id的div显示出来,籍此来隐藏提示文本,而又不影响Notes本身:

.ms-socialCommentPaging + div > div {display:none}
.ms-socialCommentPaging + div > div[id] {display:block;}

其中+表示相邻的下一个元素,>表示第一级子元素,[id]表示包含id属性的元素。

最终的CSS样式如下:

<style>
.ms-socialCommentPaging + div > div {display:none}
.ms-socialCommentPaging + div > div[id] {display:block;}
.ms-TagCloud.ms-socialThoughtBoxTags ~ div {display:none;}
</style>

将这段CSS添加到MySite Host的Custom Master Page中即可(默认为MySite.master)。