簡體   English   中英

在SharePoint 2007上獲取客戶端上的當前用戶名

[英]Get current username on the client side on SharePoint 2007

我需要創建一個簡單的靜態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>

在您的內容編輯器Web部件中包含此Web部件令牌

_LogonUser_

它輸出與Request.ServerVariables(“LOGON_USER”)相同的值

我之前已經完成了這個,包括隱藏的span和普通的舊document.getElementById來獲取innertext。

我的結論是沒有更好的方法(這也很容易)。

我檢查了頁面的來源,用戶名不在那里,所以不能被JavaScript / jQuery抓取。 瀏覽器似乎沒有隨請求一起發送它(就像它與您的本地IP和其他客戶端相關的信息一樣),因此無法從頭文件中獲取。 我能想到的唯一另一種方法是從客戶端調用Web服務,這對我的方案來說太過分了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM