我想将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/

10-12 16:27