Je me demandais comment obtenir le nom de l'utilisateur actuel en JavaScript dans le cadre d'un document HTML.
En Java, on taperait System.getProperty("user.name");
pour y parvenir. Quelle est l'alternative à cela en JavaScript?
JavaScript s'exécute dans le contexte du document HTML en cours. Il ne peut donc rien déterminer à propos d'un utilisateur actuel, à moins que ce ne soit dans la page actuelle ou que vous le fassiez AJAX appels à un serveur. script pour obtenir plus d'informations.
JavaScript ne pourra pas déterminer votre nom d'utilisateur Windows.
Il n’existe pas d’alternative entièrement compatible en JavaScript, car elle pose un problème de sécurité dangereux permettant au code côté client de prendre connaissance de l'utilisateur connecté.
Cela dit, le code suivant vous permettrait d’obtenir le nom d’utilisateur connecté, mais il ne fonctionnera que sous Windows et uniquement dans Internet Explorer, car il utilise ActiveX. De plus, Internet Explorer affichera probablement une fenêtre contextuelle vous avertissant des problèmes de sécurité potentiels associés à l'utilisation de ce code, ce qui ne facilitera pas vraiment la convivialité.
<!doctype html>
<html>
<head>
<title>Windows Username</title>
</head>
<body>
<script type="text/javascript">
var WinNetwork = new ActiveXObject("WScript.Network");
alert(WinNetwork.UserName);
</script>
</body>
</html>
Comme Surreal Dreams suggérait d'utiliser AJAX pour appeler une méthode côté serveur qui restitue le nom d'utilisateur ou rend le HTML avec une entrée cachée avec une valeur de l'utilisateur connecté, par exemple.
(Syntaxe ASP.NET MVC 3)
<input id="username" type="hidden" value="@User.Identity.Name" />
Si le script est exécuté sur Microsoft Windows dans un HTA ou similaire, vous pouvez procéder comme suit:
var wshshell=new ActiveXObject("wscript.Shell");
var username=wshshell.ExpandEnvironmentStrings("%username%");
Sinon, comme d'autres l'ont souligné, vous n'avez pas de chance. Ceci est considéré comme une information privée et n'est pas fourni par le navigateur au moteur javascript.
Je pense que ce n'est pas possible. Ce serait un risque énorme pour la sécurité si un navigateur accédait à ce type d'informations personnelles
Travailler pour moi sur IE:
<script type="text/javascript">
var WinNetwork = new ActiveXObject("WScript.Network");
document.write(WinNetwork.UserName);
</script>
... mais les contrôles ActiveX doivent être activés dans les paramètres de sécurité.