如何异步加载指纹js并获取访问者id

问题描述

我正在使用带有旧版 iMacros (v8.9.7) 的 javascript 脚本 而且我对让指纹 JS 正常工作感到有些困惑。

我的用例: 1-从CDN异步加载fingerprintingJS 2- 将visitorID 存储到变量中

我的代码

Components.utils.import("resource://gre/modules/Promise.jsm");
Components.utils.import("resource://gre/modules/devtools/Console.jsm");

    function initFingerprintJS() {
        FingerprintJS.load()
        .then(fp => fp.get())
        .then(result => {
            const visitorId = result.visitorId;
            window.console.log(visitorId);
        });
    }

    const loadScript = (src,async = true,type = "text/javascript") => {
        return new Promise((resolve,reject) => {
            try {
                const el = window.document.createElement("script");
                const container = window.document.head || window.document.body;

                el.type = type;
                el.async = async;
                el.src = src;

                el.addEventListener("load",() => {
                    resolve({ status: true });
                });

                el.addEventListener("error",() => {
                    reject({
                        status: false,message: `Failed to load the script ${src}`
                    });
                });

                container.appendChild(el);
            } catch (err) {
                reject(err);
            }
        });
    };

    function get_fingerprint() {

        loadScript("https://cdn.jsdelivr.net/npm/@fingerprintjs/fingerprintjs@3/dist/fp.min.js")
        .then((data) => {
            window.console.log("Script loaded successfully",data);
            initFingerprintJS();
        })
        .catch((err) => {
            window.console.error(err);
        });
    }
    <button onclick="get_fingerprint()">FINGERPRINT</button>

当我删除两个组件导入并在控制台中运行脚本时,一切正常。但是当它来自iMacros界面时,它会产生错误

Error

获取 https://cdn.jsdelivr.net/npm/@fingerprintjs/fingerprintjs@3/dist/fp.min.js [HTTP/2.0 200 OK 0 ms] 脚本加载成功 Object { status: 真} ReferenceError: FingerprintJS is not defined 跟踪德拉桩: initFingerprintJS@resource://gre/modules/RemoteAddonsParent.jsm:1102:5 get_fingerprint/ 资源://gre/modules/Promise-backend.js:932:23 this.PromiseWalker.walkerLoop@resource://gre/modules/Promise.jsm -> 资源://gre/modules/Promise-backend.js:813:7 this.PromiseWalker.scheduleWalkerLoop/ resource://gre/modules/Promise-backend.js:747:11

任何帮助请

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)