0

Je dois créer un composant Web statique simple - la seule partie dynamique est le nom de connexion de l'utilisateur actuel (doit être inclus dans un paramètre d'URL dans un lien). Je préfère utiliser un composant WebPart Éditeur de contenu au lieu d'un composant WebPart personnalisé que je devrai déployer. En fait, je l'ai déjà fait en utilisant JavaScript et ActiveX (WScript.Shell - code complet ci-dessous)Obtenir le nom d'utilisateur actuel côté client sur SharePoint 2007

Y at-il une meilleure façon de le faire? Ce que je n'aime pas dans l'approche ActiveX, c'est qu'elle nécessite une configuration plus libérale de IE, et même quand j'active tout ce qui est lié aux ActiveX dans les paramètres de sécurité, il y a toujours une invite à cliquer. La prise en charge de plusieurs navigateurs n'est pas un problème majeur, c'est un intranet, mais ce sera un bon ajout. Une façon dont je peux penser est de gratter le nom d'utilisateur du coin supérieur droit avec jQuery (ou juste JavaScript), mais y a-t-il quelque chose d'encore plus propre? Ou peut-être que quelqu'un a déjà fait le grattage et peut partager le code pour me sauver un peu de temps ;-)

Voici ma solution actuelle:

<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> 

Répondre

2

Inclure cette Web part token dans votre éditeur de contenu web partie:

_LogonUser_ 

Il génère la même valeur que Request.ServerVariables (« LOGON_USER »)

Je l'ai fait avant d'inclure dans un laps caché et plaine vieux document.getElementById pour obtenir le innertext.

0

Ma conclusion est qu'il n'y a pas de meilleure façon de le faire (ce qui est aussi assez facile).

J'ai vérifié la source de la page et le nom d'utilisateur n'est nulle part là, donc ne peut pas être gratté par JavaScript/jQuery. Le navigateur ne semble pas l'envoyer avec la demande (comme il le fait avec votre adresse IP locale et d'autres informations relatives au client), donc il ne peut pas non plus être obtenu à partir des en-têtes. La seule autre approche que je peux concevoir est l'appel d'un service Web du côté du client qui serait une exagération pour mon scénario.

Questions connexes