我想将fingerprint2结果存储在var。
中var info = {};
new Fingerprint2().get(function(result, components){
info.fingerprint = result;
});
alert(info.fingerprint);
但不行 是否有更好的方式:
var fp = new Fingerprint2().get();
还是一些增强的方法?
编辑: 现代与现代灵活的浏览器指纹识别库,原始指纹的继承者http://valve.github.io/fingerprintjs2/
用法:
new Fingerprint2().get(function(result, components){
console.log(result); //a hash, representing your device fingerprint
console.log(components); // an array of FP components
});
答案 0 :(得分:8)
您的代码未按预期运行,因为Fingerprint2().get(...)
是异步的 - 这意味着alert(info.fingerprint)
将在传递给get
的回调函数完成之前运行。
如果您不理解异步性的概念,要理解为什么这是必要的,请查看demo page。你会看到它说明计算指纹需要多长时间。您alert
将在调用get
和计算时间之间运行,因此无法知道指纹是什么。
在回调功能期间,您唯一可以保证拥有指纹的时间。
var info = {};
new Fingerprint2().get(function(result, components) {
info.fingerprint = result;
afterFingerprintIsCalculated();
});
function afterFingerprintIsCalculated() {
alert(info.fingerprint);
}
// BETTER (no global state)
new Fingerprint2().get(function(result, components) {
var info = {
fingerprint: result
};
processFingerprint(info);
});
function processFingerprint(data) {
alert(data.fingerprint);
}