替换 ActiveXObject("Scripting.FileSystemObject");

Replacement for ActiveXObject("Scripting.FileSystemObject");

重构旧的 javascript 代码,什么是下面 ActiveX 代码的有效替代品?只是有写本地文件的能力。

function WriteToFile(bufObj, fileName) {
 var fileObj;
 fileObj = new ActiveXObject("Scripting.FileSystemObject");
 fileObj = fileObj.OpenTextFile(fileName, ForWriting, true, TristateMixed);
 fileObj.Write(bufObj);
 fileObj.Close();
}

您在现代浏览器中没有这种能力。 (除非有人疯狂到仍然允许使用 ActiveX 控件——现在已经没有人这样做了)。

本地文件系统 100% HANDS off!!!

如果你允许这样做?

那你什么时候来我的网站看可爱的猫咪图片? 然后我要四处翻找 - up-load 说一个名为“我的密码”的文本文件。或者我四处翻找一个名为我的银行业务的文件怎么样?

或获取所有电子邮件?

事实上,你的JavaScript在使用文件-up-load时甚至不能SELECT或设置文件。所以,任何类型的本地文件访问都是不允许的,也是不可能的。

如果允许这样做,那么没有人会再次使用或信任互联网!

这是一个非常大的安全漏洞。现在也许这可能是一些内部“唯一”网站,并且允许某种本地文件权限和访问权限?既然如此?您必须继续允许并设置浏览器以允许该内部站点使用 ActiveX - 但这是一个高风险的冒险。

因此,您没有替代品,因为浏览器被代码锁定,甚至无法接触、了解或了解客户端文件夹。此外,用户可能在他们的 Android phone 或 iPad 上 - 而且他们有相当不同的文件系统(而且他们也不支持 ActiveX)。

因此,现代浏览器具有零能力,我重复零能力来查看、触摸、了解任何本地文件的存在——这很简单,这是不允许的。解决这个问题的唯一方法是找到一个仍然支持并允许 ActiveX 的浏览器——而现在它们已经很少了。