Initial commit

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
fish03
2026-09-23 14:43:16 +07:00
co-authored by Claude Opus 5.5
commit bef9f8b4ed
663 changed files with 81305 additions and 0 deletions
+167
View File
@@ -0,0 +1,167 @@
{{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}}