Files
web_huangguo_web/app/templates/base/trackerInit.html
T
fish03andClaude Opus 5.5 bef9f8b4ed Initial commit
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-23 14:43:16 +07:00

168 lines
6.0 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{{define "trackerInit"}}
{{/* PC:defer 正常加载;H5:延后注入 SDK,降低首屏带宽与主线程争抢 */}}
<script>
window.__TRACKER_BOOT__ = {
appId: "{{InTrackerAppId}}",
encryptedConfig: {{jsonStr .appConfig.ReportSDKConfig}},
appVersion: "1.0.0",
pageKey: "{{.pageKey}}",
pageName: "{{.pageName}}"
};
window.__IS_H5__ = !!(window.matchMedia && window.matchMedia("(max-width: 767px)").matches);
</script>
{{/* PC 保留原 defer;H5 不在此拉取,由下方脚本空闲时注入 */}}
<script>
(function () {
if (window.__IS_H5__) return;
var s1 = document.createElement("script");
s1.defer = true;
s1.src = "/static/common/web-sdk-v1.1.8.js?v=1";
document.head.appendChild(s1);
var s2 = document.createElement("script");
s2.defer = true;
s2.src = "/static/js/tracker.js?v=3";
document.head.appendChild(s2);
})();
</script>
<script>
(function () {
var isH5 = !!window.__IS_H5__;
var sdkSrc = "/static/common/web-sdk-v1.1.8.js?v=1";
var trackerSrc = "/static/js/tracker.js?v=3";
function getQueryParam(name) {
try {
var s = window.location.search || "";
var m = new RegExp("[?&]" + name + "=([^&#]*)").exec(s);
return m ? decodeURIComponent(m[1].replace(/\+/g, " ")) : "";
} catch (e) { return ""; }
}
function getCookie(name) {
try {
var match = document.cookie.match(new RegExp("(?:^|; )" + name + "=([^;]*)"));
return match ? decodeURIComponent(match[1]) : "";
} catch (e) { return ""; }
}
// 渠道采用首次归因:dc、ch、pc 按落地页项目的顺序识别,已有渠道不覆盖。
function getStoredChannel() {
try {
var storedChannel = window.localStorage.getItem("channel");
storedChannel = storedChannel ? String(storedChannel).trim() : "";
if (storedChannel) return storedChannel;
var channel = getQueryParam("dc") || getQueryParam("ch") || getQueryParam("pc") || "";
channel = String(channel).trim();
if (channel) window.localStorage.setItem("channel", channel);
return channel;
} catch (e) {
// localStorage 被禁用时仍使用当前 URL 的渠道码完成本次上报。
return String(getQueryParam("dc") || getQueryParam("ch") || getQueryParam("pc") || "").trim();
}
}
// H5 埋点脚本会延迟加载,先同步落盘,避免用户快速跳转时丢失首次渠道。
var trackerChannel = getStoredChannel();
function loadScript(src) {
return new Promise(function (resolve, reject) {
var existing = document.querySelector('script[src="' + src + '"]');
if (existing) {
if (existing.getAttribute("data-loaded") === "1" || typeof window.trackerInit === "function") {
resolve();
return;
}
existing.addEventListener("load", function () { resolve(); });
existing.addEventListener("error", reject);
return;
}
var s = document.createElement("script");
s.src = src;
s.async = true;
s.onload = function () {
s.setAttribute("data-loaded", "1");
resolve();
};
s.onerror = reject;
document.head.appendChild(s);
});
}
function bootTracker() {
if (typeof window.trackerInit !== "function" || !window.__TRACKER_BOOT__) return;
var uid = getQueryParam("uid") || getCookie("uid") || getCookie("userId") || "";
var cfg = window.__TRACKER_BOOT__;
window.trackerInit({
appId: cfg.appId,
uid: uid,
channel: trackerChannel,
encryptedConfig: cfg.encryptedConfig,
appVersion: cfg.appVersion,
pageKey: cfg.pageKey,
pageName: cfg.pageName,
});
}
function whenTrackerReady(cb) {
if (typeof window.trackerInit === "function") {
cb();
return;
}
var n = 0;
var t = setInterval(function () {
n += 1;
if (typeof window.trackerInit === "function" || n > 40) {
clearInterval(t);
cb();
}
}, 100);
}
function bootAnalytics() {
var run = function () {
bootTracker();
};
if (isH5) {
loadScript(sdkSrc)
.then(function () { return loadScript(trackerSrc); })
.then(run)
.catch(function () {});
return;
}
whenTrackerReady(run);
}
function scheduleBoot() {
if (isH5) {
if ("requestIdleCallback" in window) {
requestIdleCallback(bootAnalytics, { timeout: 4000 });
} else {
setTimeout(bootAnalytics, 2500);
}
return;
}
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", bootAnalytics);
} else {
bootAnalytics();
}
}
scheduleBoot();
})();
</script>
<!-- Yandex.Metrika counter -->
<script type="text/javascript">
(function(m,e,t,r,i,k,a){
m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)
})(window, document,'script','https://mc.yandex.ru/metrika/tag.js?id={{if .isNavPage}}112390883{{else}}112387687{{end}}', 'ym');
ym({{if .isNavPage}}112390883{{else}}112387687{{end}}, 'init', {ssr:true, webvisor:true, clickmap:true, ecommerce:"dataLayer", referrer: document.referrer, url: location.href, accurateTrackBounce:true, trackLinks:true});
</script>
<!-- /Yandex.Metrika counter -->
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id={{if .isNavPage}}G-SY26Y2MSHS{{else}}G-TZQS2NZ3TN{{end}}"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '{{if .isNavPage}}G-SY26Y2MSHS{{else}}G-TZQS2NZ3TN{{end}}');
</script>
{{end}}