有没有办法在JavaScript中为浏览器创建唯一的ID?
我不是说每次生成都是随机的ID,而是唯一于生成它的浏览器,并考虑到它所运行的计算机。
例如:
Windows 7 Chrome 可能会生成:asdh128hakj4gh
Windows 7 Opera 可能会生成:23hjad823hjakk
Windows 7 Chrome,在不同的硬件上,可能会生成:asd238881jaal
等等......
有没有办法实现这个功能?
有没有办法在JavaScript中为浏览器创建唯一的ID?
我不是说每次生成都是随机的ID,而是唯一于生成它的浏览器,并考虑到它所运行的计算机。
例如:
Windows 7 Chrome 可能会生成:asdh128hakj4gh
Windows 7 Opera 可能会生成:23hjad823hjakk
Windows 7 Chrome,在不同的硬件上,可能会生成:asd238881jaal
等等......
有没有办法实现这个功能?
使用cookies
和一些独特的哈希值。即使在一台计算机上有多个浏览器,每个浏览器都有自己的cookie存储器。
uuid
生成一些id - 这里是流行的npm包:https://www.npmjs.com/package/uuid,并将其保存为cookie。您也可以使用Js进行此操作。 - IProblemFactory var Sys = {};
var ua = navigator.userAgent.toLowerCase();
var s;
(s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :
(s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] :
(s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] :
(s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] :
(s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;
if (Sys.ie) document.write('IE: ' + Sys.ie);
if (Sys.firefox) document.write('Firefox: ' + Sys.firefox);
if (Sys.chrome) document.write('Chrome: ' + Sys.chrome);
if (Sys.opera) document.write('Opera: ' + Sys.opera);
if (Sys.safari) document.write('Safari: ' + Sys.safari);
使用以下代码可以获取浏览器的类型和版本,根据不同浏览器,该值应该是唯一的。如果您想基于此生成其他唯一ID,则可以使用它。
看起来你想做的是某种许可证?这样只有一些浏览器可以被注册使用你的应用程序吗?
不幸的是,没有办法读取用户计算机硬件设置。正如一个答案所说,你可以在该机器上存储cookie,但它很容易丢失。
如果你只使用旧版IE浏览器,那么可以使用ActiveX来读取计算机硬件:http://www.devarticles.com/c/a/JavaScript/How-to-Use-JavaScript-for-Hardware-Knowledge/