javascript - 在 Mozilla 中获取 MAC 地址,ActiveXObject 不起作用

标签 javascript firefox

var locator = new ActiveXObject("WbemScripting.SWbemLocator");
            var service = locator.ConnectServer(".");
            var properties = service.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration");
            var e = new Enumerator(properties);
            var MACaddress = '';
            alert("Its Inside");
            for (; !e.atEnd(); e.moveNext()) {
                var p = e.item();
                if (p.MACAddress) {
                    MACaddress = MACaddress + p.MACAddress + ',';
                }
            }
            MACaddress = MACaddress.substring(0, MACaddress.length - 1);
            MACaddress = replaceAll(MACaddress, ':', '-');
            location.href = location.href + '?CAT=MAC&MACAddr=' + MACaddress;

这个函数在 IE 中工作正常,但在 mozilla firefox 中却在第一行本身中断。我将 locator.ConnectServer(".") 更改为 locator.ConnectServer("MACHINE"),但它在 Mozilla Firefox 中仍然无法正常工作。

最佳答案

简单的答案:你不能。

出于安全原因,现代浏览器将浏览器中发生的所有事情都沙箱化(或尝试沙箱化)。沙箱可以防止对系统的任何直接访问,包括。文件系统、硬件等(这并不意味着浏览器不与硬件通信,而是作为用户我们无法直接访问它)。

IE 是唯一支持 ActiveX(这是 Microsoft 自己的技术)的浏览器,但出于同样的原因(主要是..)安全性,不应依赖它。

如果您想将 MAC 地址用于某种唯一标识符/安全性,您可以查看新的 Web Cryptography API然而,在撰写本文时,它仍处于草稿模式,并未得到广泛支持(但将来会或打算跨浏览器),因此目前可能不是非常有用的建议。

在任何情况下,您都可以使用服务器端根据各种因素生成唯一标识符,并使用 cookie 或 localStorage 等将其本地存储在浏览器中。

关于javascript - 在 Mozilla 中获取 MAC 地址,ActiveXObject 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19784258/

相关文章:

javascript - SoundManager2:如何附加当前播放声音的 onfinish 事件回调

javascript - youtube视频播放完后如何自动退出浏览器

javascript - Firefox 中不需要的 JavaScript 文件,NS_ERROR_XPC_BAD_CONVERT_JS

python - 如何在 Ubuntu 上正确使用带有 geckodriver 的 selenium 和带有 python 的 firefox?

javascript - extjs网格分页在页面加载时加载所有数据

javascript - Ajax调用url最大长度

javascript - 使用图表 js 的圆环图中的饼图

javascript - 在 Bokeh 服务器配置中如何从客户端浏览器获取 x,y 坐标到服务器

html - 插入文字效果适用于 Chrome,但不适用于 Firefox

ñÑ 字符的 Javascript 验证适用于 Chrome,但不适用于 Firefox