0

Мне нужно создать простую статическую веб-часть - единственной динамической частью является текущее имя пользователя (должно быть включено в параметр URL в ссылку).Получить текущее имя пользователя на стороне клиента в SharePoint 2007

Я бы предпочел использовать веб-часть редактора контента вместо пользовательской веб-части, которую мне нужно будет развернуть. Фактически, я уже делал это с использованием 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 в вашем редакторе содержимого веб-части:

_LogonUser_ 

Он выдает такое же значение, как Request.ServerVariables («LOGON_USER»)

Я сделал это, прежде чем включать в скрытом пролете и простой старый document.getElementById, чтобы получить внутренний текст.

0

Мой вывод заключается в том, что нет лучшего способа сделать это (что также достаточно просто).

Я проверил источник страницы, и имя пользователя там нигде не было, поэтому JavaScript не может быть соскаблирован JavaScript/jQuery. Браузер, похоже, не отправляет его с запросом (как это делает ваш локальный IP-адрес и другая информация, связанная с клиентом), поэтому их также нельзя получить из заголовков. Единственный другой подход, который я могу себе представить, - это вызвать веб-службу с клиентской стороны, которая будет излишним для моего сценария.

Смежные вопросы