如何将 Google 分析脚本添加到 Uno WebAssembly

How to add Google Analytics Scripts to Uno WebAssembly

我正在尝试向 Wasm 项目添加一个 google 标签管理器脚本。为此,我在 WasmScripts 文件夹中创建了一个新的脚本文件 localscript.js。这是该文件的样子

(function () {
    const head = document.getElementsByTagName("head")[0];

    var myScript = document.createElement('script');

    myScript.setAttribute('src', 'https://www.googletagmanager.com/gtag/js?id=UA-1234567-7');

    head.appendChild(myScript);
})();
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
gtag('js', new Date());

gtag('config', 'UA-1234567-7');

然后我将这个脚本嵌入到 wasm.csproj 文件中,像这样

  <ItemGroup>
      <EmbeddedResource Include="WasmCSS\Fonts.css" />
      <EmbeddedResource Include="WasmScripts\AppManifest.js" />
      <EmbeddedResource Include="WasmScripts\localscript.js" />
  </ItemGroup>

我觉得一切都很好,但是当我 运行 这个时,localscript.jsgoogletagmanager 之前加载。我怎样才能解决这个问题,让 googletagmanager 排在前面,支持代码排在后面?

您可以使用 Uno.Wasm.Bootstrap provided require.js:

require(
    ["https://www.googletagmanager.com/gtag/js?id=UA-1234567-7"],
    () => {
        window.dataLayer = window.dataLayer || [];
        function gtag() { dataLayer.push(arguments); }
        gtag('js', new Date());

        gtag('config', 'UA-1234567-7');
    }
);

这将使箭头函数中的代码在脚本下载后执行。