簡體   English   中英

使用Javascript讀取環境變量

[英]Reading environment variables with Javascript

我需要從客戶端操作系統上的環境變量中讀取系統時間。 我在Stackoverflow上搜索,發現這是不可能的。 然而,這些答案來自2010年,我想問一下自那以后是否有任何改變。

是否可以使用某種框架? 或Javascript仍然是沙盒並從操作系統切斷?

szpic ,如果Javascript沒有來自操作系統的沙盒,那么任何半szpic犯罪分子都可以進入你的計算機並控制住。 允許環境變量的程度太低,不允許。

看看你所有的環境變量,並問問自己這個星球上的每個人是否都應該能夠訪問有關你計算機的所有數據。


如果您想使用Javascript執行此操作,則必須使用特殊的Web瀏覽器,例如node-webkit 但是,它不會在任何普通的Web瀏覽器上運行,所以不要指望超過0.0001%的人口期望運行您的頁面。


我不知道你的預期用途,但拋出環境變量的一個技巧是創建一個Web應用程序的快捷方式,並將其作為URL參數包含在那里(至少在Winblows上)。

http://myapp.com?computername=%COMPUTERNAME%

javascript Date()對象提供客戶端系統時間。

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();

只有一種方法可以做到這一點 - 使用特殊的Web瀏覽器。 node-webkit這樣的東西。 它將webkit引擎與node.js集成在一起,因此您可以將它與DOM一起使用。

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

但正如其他人所說 - 沒有機會用“普通”的網絡瀏覽器來做。

這可以使用VBScript,但在IE11中刪除了支持。 如果您在IE環境(例如內部Intranet)中,則可以將VB代碼(CreateObject(“wscript.shell”))轉換為使用ActiveX。 這將解決您在IE11邊緣模式下棄用VB腳本的問題,並允許您的頁面訪問您的環境變量並在邊緣模式下使用。 顯然這只是IE瀏覽器,但如果您使用的是VBScript,那么它也只是IE瀏覽器。

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

今天(在撰寫本文時)所有的答案都已過時了。 :)

當然,JS仍然是沙箱,但這並不妨礙任何人在客戶端軟件中使用類似環境變量的東西。 您需要明智地了解和使用的是將任何類型的數據從操作系統傳輸到前端應用程序。

幾個前端框架可能會有所幫助。 例如,使用@ angular / cli創建的Angular應用程序為開箱即用的不同環境提供了用例。 在應用程序配置文件(例如angular.json)中,您可以配置選項,變量,值,以及通過Webpack傳輸到前端應用程序所需的任何內容 它們只能被讀取一次,並且不能在運行時更改。

以下庫nwjs.io嘗試新的東西:它允許您直接從DOM調用所有Node.js模塊。

在停靠/ docker環境中,對后端和前端軟件還有其他期望,並且這些環境的配置不同,並且從操作系統的角度進行了適當的約束。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM