在SharePoint 2007上获取客户端上的当前用户名

时间:2013-02-27 10:34:09

标签: javascript sharepoint sharepoint-2007 web-parts client-side

我需要创建一个简单的静态Web部件 - 唯一的动态部分是当前用户登录名(需要包含在链接中的URL参数中)。

我宁愿只使用内容编辑器Web部件而不是我需要部署的自定义Web部件。事实上,我已经使用JavaScript和ActiveX(WScript.Shell - 下面的完整代码)

来做到这一点

有没有更好,更本土的方式来做到这一点?我不喜欢ActiveX方法的是它需要更自由的IE配置,即使我在安全设置中启用与ActiveX相关的所有内容,仍然需要点击提示。 跨浏览器支持不是主要问题,它是内联网 - 但也是一个很好的额外支持。

我能想到的一种方法是使用jQuery(或者只是JavaScript)从右上角抓取用户名,但有更清洁的东西吗? 或者也许某人已经完成了抓取并可以共享代码以节省我一些时间; - )

这是我目前的解决方案:

<script language="javascript">
    function GetUserName()
    {
        var wshell = new ActiveXObject("WScript.Shell");
        var username = wshell.ExpandEnvironmentStrings("%USERNAME%");

        var link = document.getElementById('linkId');
        link.href = link.href + username.toUpperCase();
    }
</script>
<P align=center>
    <a id="linkId" onclick="GetUserName();" href="<my_target_URL>?UserID=">open username-based URL</a>
</P>

2 个答案:

答案 0 :(得分:2)

在您的内容编辑器网页部分中包含此Web part token

_LogonUser_

它输出与Request.ServerVariables(“LOGON_USER”)

相同的值

我之前已经完成了这个操作,包括隐藏的span和普通的旧document.getElementById来获取innertext。

答案 1 :(得分:0)

我的结论是没有更好的方法(这也很容易)。

我检查了页面的来源,用户名不在那里,所以不能被JavaScript / jQuery抓取。浏览器似乎没有随请求一起发送它(就像它与您的本地IP和其他客户端相关的信息一样),因此无法从头文件中获取。 我能想到的唯一另一种方法是从客户端调用一个Web服务,这对我的场景来说太过分了。