0

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

我宁愿只使用内容编辑器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

包括此Web part token在内容编辑器Web部件:

_LogonUser_ 

它包括一个隐藏的范围之前输出相同的值Request.ServerVariables(“LOGON_USER”)

我做这个和普通的旧document.getElementById来获得内联文本。

0

我的结论是,有没有更好的方式来做到这一点(这也是非常容易的)。

我检查了页面的来源,并且用户名不在那里,所以不能被JavaScript/jQuery刮掉。浏览器似乎并没有发送请求(就像它与本地IP和其他客户端相关的信息一样),所以无法从头部获得。 我可以想象的唯一的另一种方法是从客户端调用Web服务,这对我的方案来说会是一种矫枉过正。

相关问题