使用 JavaScript 隐藏 WSS 3.0 Webpart



我在应用程序中使用 WSS 3.0。我正在将列表显示为数据视图 Web 部件。我的目标是使此 Web 部件对选定的一组个人可见。由于 WSS 3.0 中没有目标受众选项,因此我转到编辑列表的权限,并仅向所选用户授予读取权限。这不会在页面中隐藏 Web 部件,而是向其他用户显示"拒绝访问"消息。

访问被拒绝。您无权执行此操作或访问此资源。

正如我所说,我想隐藏此 Web 部件,例如使其在网页上对无权查看它的其他用户不可见。由于此消息将仅向那些没有权限的用户显示!,因此我的方法是在 html 中搜索上述消息并标识和隐藏父节点,从而隐藏 Web 部件。

我不太确定该怎么做。有什么想法吗?提前感谢!

我假设您处于可以向页面添加其他 Web 部件而不是尝试直接将 JavaScript 添加到 DataView Web 部件的情况。如果设计器添加此列表的另一个视图,我的建议在单独的页面上不起作用。

将空白.js文件上传到您的网站资产。将内容编辑器 Web 部件添加到页面,将其指向该文件。从提供程序添加 JQuery 或自行托管,并在文件中添加引用。从那里,你有 3 个工作方向:首先,使用 Internet Explorer 的 F12 开发人员工具浏览 Web 部件,特别注意具有良好唯一 ID、名称或类的div 和表,如果隐藏,这些div 和表将解决你的问题。还要注意div 或表或单元格或任何包含拒绝访问文本的 id。其次,(假设你是JQuery的新手)做一些JQuery教程,然后开始选择上述项目,比如说,改变它们的背景颜色。一旦你拥有了这两个,你就有 90% 了:(尝试)选择将包含拒绝访问文本的对象,如果 innerHTML 存在并且等于该字符串,则为div 或表设置 display:none 以隐藏你的 Web 部件。您拥有的第三个工具是直接使用SharePoint Designer编辑页面:您可以在任何xsl:template周围抛出带有您选择的ID的div,这可能有助于您的JQuery选择。

很抱歉,我无法为您提供具体的代码,因为我无法对其进行测试。如果情况发生变化,我会尝试给出更详细的回复。

旧的、误导性的答案:这里的任何一个答案都适合你吗?或者,这个答案有一些很好的资源来解决你的问题。只需将消息更改为空字符串即可。

感谢Aron :D

我找到了 Web 部件的 ID 并对其进行了硬编码。它提供了解决方案,但我希望通过搜索 innerhtml 以编程方式获取 id,因为我有多个必须隐藏的 Web 部件。

我在这里找到了部分解决方案:使用 JavaScript onclick 方法隐藏 SharePoint Web 部件

我在页面上放置了一个 CEWP,并在其中添加了以下脚本:

<script>
function hide()
{
    var content = document.getElementById("webpartID").innerHTML;
    var n = content.search("Access denied. You do not have permission to perform this action or access this resource");
    if(n!=-1)
    {       document.getElementById("webpartID").style.display="none";
    }
}
_spbodyonloadfunctionnames.push("hide");
</script>

就我而言,我从 aspx 页面或页面的视图源中选取了 webpart id。

相关内容

  • 没有找到相关文章

最新更新