javascript - fingerprintjs 未在 chrome 扩展中加载

标签 javascript google-chrome-extension

我正在尝试加载 fingerprintjs在我的 chrome 扩展程序中,由于某种原因它没有加载。 文档说要使用这种方法,它在独立网站上运行良好,但在 chrome 扩展中不行

<script>
    function initFingerprintJS() {
      FingerprintJS.load().then(fp => {
        // The FingerprintJS agent is ready.
        // Get a visitor identifier when you'd like to.
        fp.get().then(result => {
          // This is the visitor identifier:
          const visitorId = result.visitorId;
          console.log("visitorId", visitorId);
        });
      });
    }
  </script>
  <script async src="fp.min.js" onload="initFingerprintJS();"></script>

对于 chrome 扩展,我添加了一个 JS 文件 initFingerprint.js,其中包含如下初始化代码:

var visitorId = null; //will hold the actual fingerprint
function initFingerprintJS() {
    console.log("inside initFingerprintJS");
    FingerprintJS.load().then(fp => {
        console.log("loaded initFingerprintJS");
        fp.get().then(result => {
            console.log("initFingerprintJS got result", result)
            visitorId = result.visitorId; // This is the visitor identifier
            console.log("visitorId", visitorId);
        });
    });
}
initFingerprintJS();

在 background.html 中,我添加了这个:

<script async src="fp.min.js"></script>
<script async src="initFingerprint.js"></script>

我已经尝试过在其中使用 async 而不是在其中,但仍然没有成功。这行将打印,但它下面的其他行都不会打印。

inside initFingerprintJS

我做错了什么?我感谢任何帮助。谢谢

最佳答案

删除 <script> fp.min.js 的标签从 html 并在 initFingerprint.js 中自己创建脚本元素,以便您可以使用 onload直接事件:

loadScript('fp.min.js').then(initFingerprintJS);

function loadScript(url) {
  return new Promise((resolve, reject) => {
    const el = document.createElement('script');
    el.onload = resolve;
    el.onerror = reject;
    el.src = url;
    document.documentElement.appendChild(el);
  });
}

async function initFingerprintJS() {
  visitorId = await (await FingerprintJS.load()).get();
  console.log('visitorId', visitorId);
}

关于javascript - fingerprintjs 未在 chrome 扩展中加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64608891/

相关文章:

javascript - 在 Vue.js 中包含 bootstrap 抛出 jQuery not found 错误

web - 将选项添加到浏览器的上下文菜单(浏览器的扩展)

javascript webkitTransform 样式属性未设置 - 范围?

javascript - 将 jQuery Mobile 应用程序连接到服务器数据库并在互联网连接关闭时打开弹出窗口

javascript - JS 忽略我的 setInterval

javascript - 无法获取当前选项卡的数据

javascript - 跨域 OAuth...如何获得响应?

javascript - 使用 React TSX 有条件地验证可见字段 React-hook-forms 是的

javascript - 为什么 MatterJS 物理坐标与 DOM 元素有偏移?

javascript - 清除html中的单个文本框