我想知道如何在 JavaScript 中获取当前用户的姓名作为 HTML 文档的一部分。
在 Java 中,可以通过键入System.getProperty("user.name");
来实现这一点。JavaScript 中的替代方法是什么?
我想知道如何在 JavaScript 中获取当前用户的姓名作为 HTML 文档的一部分。
在 Java 中,可以通过键入System.getProperty("user.name");
来实现这一点。JavaScript 中的替代方法是什么?
JavaScript 在当前 HTML 文档的上下文中运行,因此它无法确定有关当前用户的任何信息,除非它位于当前页面中,或者您对服务器端脚本执行 AJAX 调用以获取更多信息。
JavaScript 将无法确定您的 Windows 用户名。
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>
正如Surreal Dreams建议的那样,您可以使用 AJAX 调用服务于用户名的服务器端方法,或者使用具有登录用户值的隐藏输入呈现 HTML,例如
(ASP.NET MVC 3 语法)
<input id="username" type="hidden" value="@User.Identity.Name" />
如果脚本在 Microsoft Windows 上以 HTA 或类似方式运行,您可以执行以下操作:
var wshshell=new ActiveXObject("wscript.shell");
var username=wshshell.ExpandEnvironmentStrings("%username%");
否则,正如其他人所指出的那样,你就不走运了。这被认为是私人信息,浏览器不会将其提供给 javascript 引擎。
我认为这是不可能的。如果浏览器访问此类个人信息,将带来巨大的安全风险
在 IE 上为我工作:
<script type="text/javascript">
var WinNetwork = new ActiveXObject("WScript.Network");
document.write(WinNetwork.UserName);
</script>
...但 ActiveX 控件需要在安全设置中打开。