Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Javascript读取环境变量_Javascript_Environment Variables - Fatal编程技术网

用Javascript读取环境变量

用Javascript读取环境变量,javascript,environment-variables,Javascript,Environment Variables,我需要从客户端操作系统上的环境变量读取系统时间。我搜索了Stackoverflow,发现这是不可能的。然而,这些答案都是从2010年开始的,我想问一下,自那以后是否有什么变化 有没有可能使用某种框架?或者Javascript仍然被沙盒和操作系统隔离?szpic,如果Javascript没有被沙盒从操作系统隔离,任何愚蠢的罪犯都可以进入你的计算机并控制它。允许环境变量的水平太低了,根本不可能被允许 看看你所有的环境变量,问问你自己,这个星球上的每个人是否都应该访问你电脑的所有数据 如果你想用Ja

我需要从客户端操作系统上的环境变量读取系统时间。我搜索了Stackoverflow,发现这是不可能的。然而,这些答案都是从2010年开始的,我想问一下,自那以后是否有什么变化


有没有可能使用某种框架?或者Javascript仍然被沙盒和操作系统隔离?

szpic
,如果Javascript没有被沙盒从操作系统隔离,任何愚蠢的罪犯都可以进入你的计算机并控制它。允许环境变量的水平太低了,根本不可能被允许

看看你所有的环境变量,问问你自己,这个星球上的每个人是否都应该访问你电脑的所有数据


如果你想用Javascript实现这一点,你必须使用一个特殊的web浏览器,比如。不过,它不会在任何普通的web浏览器上运行,所以不要期望超过0.0001%的用户希望运行您的页面


我不知道您的预期用途,但有一个技巧,即加入环境变量,就是创建web应用程序的快捷方式,并将其作为URL参数包含在其中(至少在Winblows上)


只有一种方法可以做到这一点——使用特殊的web浏览器。差不多。它将webkit引擎与node.js集成在一起,因此您可以将其与DOM一起使用

document.write(require('os').type());

但正如其他人所说,用“普通”的网络浏览器是不可能做到这一点的。

FWIW。。。。只是在玩一个.HTA文件(是的,它使用了MSIE“引擎”,因此您可能会忘记其他浏览器),下面的JavaScript读取
%TEMP%
路径变量来设置文件路径+名称,以便安全地编写临时文件。这对我来说没问题:

var oTest = new ActiveXObject("wscript.shell");
pathTest = oTest.ExpandEnvironmentStrings("%TEMP%") + "\\test_it.txt";
oTest = null;
alert(pathTest);  // proves we can read %TEMP%

// and create the file, to complete the example
var oFSO = new ActiveXObject("Scripting.FileSystemObject");
var fil = oFSO.CreateTextFile(pathTest, true);
fil.WriteLine("Hello wonderful world!");
fil.Close();

这可以使用VBScript实现,但IE11中删除了支持。如果您在IE环境中(如内部Intranet),则可以将VB代码(CreateObject(“wscript.shell”))转换为使用ActiveX。这将使您绕过VB脚本在IE11边缘模式下贬值的问题,并允许您的页面访问环境变量并在边缘模式下使用。很明显,这只是IE,但如果您在使用VBScript之前也只是IE

var ax = new ActiveXObject("wscript.shell");
uname = ax.ExpandEnvironmentStrings("%USERNAME%");
av = null;
alert(uname);

javascript Date()对象提供了客户端的系统时间。

所有答案都是今天(在撰写本文时)的过时答案。:)

当然,JS仍然是沙盒,但这并不妨碍任何人在客户端软件中使用环境变量之类的东西。您需要知道并明智地使用的是将任何类型的数据从操作系统传输到前端应用程序

一些前端框架可能在这方面有所帮助。例如,使用创建的角度应用程序为不同的环境提供了现成的用例。在应用程序配置文件(例如angular.json)中,您可以配置选项、变量、值,以及您需要通过传输到前端应用程序的任何内容。它们只能读取一次,不能在运行时更改

下面的库尝试了一些新功能:它允许您直接从DOM调用所有Node.js模块


在docked/docker环境中,对后端和前端软件还有其他期望,从操作系统的角度来看,这些环境的配置是不同的,并且受到适当的约束

如果JavaScript可以操纵操作系统环境变量,我们都会被搞砸。我不是想在这里写。只需阅读;>它仍然是不安全的,所以你仍然不被允许这样做(为什么它会改变?)。你为什么要读它们?我猜你的意思是这个答案:?是的,如果您正在寻找从浏览器中的网站读取这些内容的方法,则此选项仍然有效。我喜欢:%TIME%%DATE%等变量,这取决于您使用的浏览器!你听说过
node webkit
吗?很抱歉撞到了这么一篇老文章,但是
oTest=null有什么特别的原因吗在最后?它是以某种方式“释放”对象还是什么?重要吗?这就是我的想法。尝试一下有没有-我喜欢在自己之后保持事物整洁:)在这里找到另一个问题的答案,所以:。它可能会帮助那些有同样疑问的人,而且是唯一正确的答案。Ie:您不需要环境访问。以上所有答案的目的是什么?这是一个直截了当的解决方案。
var ax = new ActiveXObject("wscript.shell");
uname = ax.ExpandEnvironmentStrings("%USERNAME%");
av = null;
alert(uname);