我想知道如何在JavaScript中将当前用户的名称作为HTML文档的一部分。
在Java中,可以键入System.getProperty("user.name");
来实现此目的。在JavaScript中有什么替代方法?
答案 0 :(得分:75)
JavaScript在当前HTML文档的上下文中运行,因此它无法确定当前用户的任何内容,除非它位于当前页面中,或者您对服务器端脚本执行AJAX调用以获取更多信息。
JavaScript无法确定您的Windows用户名。
答案 1 :(得分:31)
JavaScript中没有 完全兼容的 替代方案,因为它具有不安全的安全问题,允许客户端代码了解登录用户。
也就是说,下面的代码将允许您获取登录的用户名,但它只能在Windows上运行,并且只能在Internet Explorer中使用,因为它使用了ActiveX。此外,Internet Explorer很可能会显示一个弹出窗口,提醒您注意与使用此代码相关的潜在安全问题,这无法帮助您实现可用性。
<!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>
正如超现实梦想建议您可以使用AJAX调用服务器端方法来回送用户名,或使用隐藏输入呈现带有登录用户值的HTML,例如
(ASP.NET MVC 3语法)
<input id="username" type="hidden" value="@User.Identity.Name" />
答案 2 :(得分:10)
如果脚本在HTA或类似的Microsoft Windows上运行,您可以这样做:
var wshshell=new ActiveXObject("wscript.shell");
var username=wshshell.ExpandEnvironmentStrings("%username%");
否则,正如其他人所指出的那样,你运气不好。这被视为私人信息,浏览器不会将其提供给javascript引擎。
答案 3 :(得分:6)
我认为不可能这样做。如果浏览器访问这种个人信息,那将是一个巨大的安全风险
答案 4 :(得分:-1)
在IE上为我工作:
<script type="text/javascript">
var WinNetwork = new ActiveXObject("WScript.Network");
document.write(WinNetwork.UserName);
</script>
...但是在安全设置中需要启用ActiveX控件。