在 Cookie 同意后动态注入 App Insights 脚本的问题

问题描述 投票:0回答:1

我尝试在用户接受 cookie 后将 Microsoft Azure Application Insights 脚本动态加载到

<head>
标记中。但是,我遇到了一个问题,即 JavaScript 代码中的反斜杠 (
\
) 被删除,导致脚本中断。

以下是相关代码片段:

const scripts = `
    <script type="text/javascript">
        !(function (cfg) {
            // ... 
        })( {
            src: "https://js.monitor.azure.com/scripts/b/ai.3.gbl.min.js",
            crossOrigin: "anonymous",
            cfg: {
                connectionString: "InstrumentationKey=YOUR_INSTRUMENTATION_KEY"
            }
        });
    </script>
    <script type="text/javascript" language="javascript">
        var ref = document.referrer;
        appInsights.trackTrace({ message: 'Referrer  ' + ref });
    </script>
`;

我实现了以下函数将脚本附加到头部:

function addScripts() {
    $('head').append(scripts);
};

但是,当我执行此函数时,反斜杠被删除,导致脚本损坏。我希望脚本能够正确加载而不会丢失任何字符。

javascript jquery cookies dynamic-loading
1个回答
0
投票

您指的

\ 
是什么?你是说
/
中的
</script>
需要转义吗?

脚本中不能有

</script>

改为这样做

const script = document.createElement('script');
script.textContent = `
        !(function (cfg) {
            // ... 
        })( {
            src: "https://js.monitor.azure.com/scripts/b/ai.3.gbl.min.js",
            crossOrigin: "anonymous",
            cfg: {
                connectionString: "InstrumentationKey=YOUR_INSTRUMENTATION_KEY"
            }
        });
        var ref = document.referrer;
        appInsights.trackTrace({ message: 'Referrer  ' + ref });
`
document.querySelector('head').appendChild(script)
© www.soinside.com 2019 - 2024. All rights reserved.