【问题标题】:Hide WSS 3.0 Webpart Using JavaScript使用 JavaScript 隐藏 WSS 3.0 Webpart
【发布时间】:2013-10-15 18:38:13
【问题描述】:

我在我的应用程序中使用 WSS 3.0。我将列表显示为 DataView Webpart。我的目标是让这个 webpart 对选定的一组人可见。由于在 WSS 3.0 中没有 Target Audience 选项,我编辑了 List 的 Permissions 并仅将 Read 权限授予选定的用户。这不会从页面中隐藏 Web 部件,而是向其他用户显示拒绝访问消息。

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

正如我所说,我想隐藏此 Web 部件,例如使其在网页上对无权查看它的其他用户不可见。由于此消息只会显示给没有权限的用户!我的做法是在html中搜索上述消息并识别并隐藏父节点,从而隐藏webpart。

我不太确定该怎么做。有任何想法吗?提前致谢!

【问题讨论】:

    标签: javascript sharepoint web-parts wss-3.0 dataviewwebpart


    【解决方案1】:

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

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

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

    旧的、错误的答案:here 中的任何一个答案都适合你吗?或者,this answer 有一些很好的资源可以解决您的问题。只需将消息更改为空字符串即可。

    【讨论】:

    • 谢谢阿伦。感谢您的快速回复。我不想按照这里的建议自定义/显示不同的错误消息。我宁愿尝试从网页中隐藏 Web 部件。
    • 编辑:我今天是个智障。对不起。是的,您已经在询问如何通过 JavaScript 更改它。我将更新我的上述答案。对不起!
    【解决方案2】:

    谢谢阿伦:D

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

    我在这里找到了部分解决方案: Hide SharePoint web part using javascript onclick method

    我在页面上放了一个 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。

    【讨论】:

      猜你喜欢
      • 2010-11-16
      • 2010-11-03
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      • 2011-05-28
      • 2014-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多