You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

用户同意Cookie后动态注入App Insights脚本遇转义符丢失问题

问题解决:动态注入Azure Application Insights脚本时反斜杠丢失的修复方案

问题原因

你当前的代码使用HTML实体(<、")替代原生HTML标签和引号,结合jQuery的append()方法解析HTML字符串时,会自动转换HTML实体,同时可能导致脚本中需要保留的反斜杠被意外剥离,最终损坏脚本结构。

解决方案

方案1:直接使用原生HTML语法构建模板字符串

移除不必要的HTML实体,直接在模板字符串中使用<script>标签和双引号(外层用反引号包裹,内部双引号无需转义),避免HTML解析时的转义干扰:

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">
        var ref = document.referrer;
        appInsights.trackTrace({ message: 'Referrer  ' + ref });
    </script>
`;

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

方案2:直接创建DOM元素插入(更可靠)

绕过HTML字符串解析环节,直接创建script DOM节点并设置内容,彻底避免转义问题:

function addScripts() {
    // 创建并插入Application Insights初始化脚本
    const initScript = document.createElement('script');
    initScript.type = 'text/javascript';
    initScript.textContent = `
        !(function (cfg) {
            // ... 原初始化逻辑
        })( {
            src: "https://js.monitor.azure.com/scripts/b/ai.3.gbl.min.js",
            crossOrigin: "anonymous",
            cfg: {
                connectionString: "InstrumentationKey=YOUR_INSTRUMENTATION_KEY"
            }
        });
    `;
    document.head.appendChild(initScript);

    // 等待AI脚本加载完成后执行追踪逻辑,避免appInsights未定义
    initScript.onload = function() {
        const traceScript = document.createElement('script');
        traceScript.type = 'text/javascript';
        traceScript.textContent = `
            var ref = document.referrer;
            appInsights.trackTrace({ message: 'Referrer  ' + ref });
        `;
        document.head.appendChild(traceScript);
    };
}

额外提示

如果使用方案1,需注意:当脚本中包含需要保留的反斜杠(如正则表达式、转义字符)时,要在模板字符串中用双反斜杠\\进行转义,确保最终插入的脚本中保留单个反斜杠。

内容的提问来源于stack exchange,提问作者Kernel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 23:59:52