用户ID函数JavaScript
我试图从userAgent和Date函数中生成一个UserID。我还想了解回调函数(我仍然没有得到(jsnoob))。因此,我构建了以下示例:用户ID函数JavaScript,javascript,string,hash,Javascript,String,Hash,我试图从userAgent和Date函数中生成一个UserID。我还想了解回调函数(我仍然没有得到(jsnoob))。因此,我构建了以下示例: var storage = window.localStorage; var storageUserId = storage.getItem("userID"); var text = ""; function userID(callback){ var agent = window.navigator.userAgent; var n
var storage = window.localStorage;
var storageUserId = storage.getItem("userID");
var text = "";
function userID(callback){
var agent = window.navigator.userAgent;
var now = new Date();
try{
callback(agent, now);
}catch(e){}
}
function hasher(agent,now){
var hash = 0;
var arr = [];
for(var i = 0; i < arguments.length; i++){
var pars = arguments[i];
for(var j = 0; j < pars.length; j++){
var charI = pars.charCodeAt(j);
hash = ((hash<<5)-hash)+charI;
hash = hash & hash; // Convert to 32bit integer
hash = hash.toString();
}
}
console.log(hash + "|" + hash);
}
userID(hasher);
var storage=window.localStorage;
var storageUserId=storage.getItem(“userID”);
var text=“”;
函数userID(回调){
var agent=window.navigator.userAgent;
var now=新日期();
试一试{
回调(代理,现在);
}捕获(e){}
}
函数哈希器(代理,现在){
var散列=0;
var-arr=[];
for(var i=0;i hash=((hash您应该将哈希循环提取到一个新函数中:
function hash(str){
var hash = 0;
for(const char of str){
const charCode = char.charCodeAt(0);
hash = ((hash<<5)-hash)+charCode;
}
hash = hash & hash; // Convert to 32bit integer
return hash.toString();
}
(PS:您知道新日期将每毫秒更改一次吗?那么实际的问题是什么呢?如果您想同时管理多个hasher()
备选方案,那么回调包装器不是必需的,而且只需要。hash
在每次迭代中都会得到不同的值。执行hash+“|”+哈希
您只需输出上一次迭代的结果两次。谢谢!@JonasW。我应该如何重写哈希+“|”+哈希格式“9834917834 | 8293479273”出来了?太好了!是的,我知道。嗨,乔纳斯,还有一个问题:我不能使用ECMA脚本。有没有其他方法来编写哈希函数?谢谢!@Toni2708什么?你知道javascript是ECMAscript吗?谷歌标签管理器不支持ECMA脚本功能。这就是我问的原因。它支持什么?
function getUserID(){
return hash(window.navigator.userAgent) + "|" + hash("" + new Date);
}