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

Javascript 获取SharePoint 2007客户端上的当前用户名,javascript,sharepoint,sharepoint-2007,web-parts,client-side,Javascript,Sharepoint,Sharepoint 2007,Web Parts,Client Side,我需要创建一个简单的静态web部件-唯一的动态部件是当前用户登录名(需要包含在链接的URL参数中) 我宁愿只使用内容编辑器web部件,而不是需要部署的自定义web部件。事实上,我已经使用JavaScript和ActiveX实现了这一点(WScript.Shell-下面的完整代码) 有没有更好、更地道的方法?我不喜欢ActiveX方法的一点是,它需要对IE进行更自由的配置,即使我在安全设置中启用了所有与ActiveX相关的内容,仍然会有一个需要单击的提示。 跨浏览器支持不是一个主要问题,它是内部网

我需要创建一个简单的静态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>

函数GetUserName()
{
var wshell=newActiveXObject(“WScript.Shell”);
var username=wshell.ExpandEnvironmentStrings(“%username%”);
var link=document.getElementById('linkId');
link.href=link.href+username.toUpperCase();
}


我的结论是,没有更好的方法可以做到这一点(这也足够容易)

我检查了页面的源代码,但用户名不在任何地方,因此不能被JavaScript/jQuery删除。浏览器似乎没有将其与请求一起发送(与您的本地IP和其他客户端相关信息一样),因此也无法从标头中获取。 我唯一能想到的另一种方法是从客户端调用web服务,这对于我的场景来说是一种过分的手段。

在您的内容编辑器web部件中包括:

_LogonUser_
它输出与Request.ServerVariables(“登录用户”)相同的值

我以前做过这样的工作,包括在隐藏的span和普通的old document.getElementById中获取innertext