我想将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
});
最佳答案
您的代码无法正常工作,因为Fingerprint2().get(...)
是异步的-这意味着alert(info.fingerprint)
将在传递给get
的回调函数完成之前运行。
要了解如果您不了解异步性的概念,为什么有必要这样做,请查看demo page。您会看到它显示计算指纹需要多长时间。您的alert
将在调用get
到计算出ojit_code之间运行,因此无法知道指纹是什么。
您唯一可以保证拥有指纹的时间是在回调函数期间。
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);
}
关于javascript - 如何将指纹2存储在var中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39768888/