Analytics auf Umami umgestellt, Firmennamen korrigiert, Lagebild-Daten aus Git entfernt
- cookie-consent.js: Von /insights/t.js auf Umami (/analytics-und-so/datenblick.js) umgestellt, cookieloses Tracking korrekt beschrieben, Website-ID ergänzt - analytics-events.js: Custom-Event-Tracking für Umami (Produkt-Clicks, About-Tabs, Scroll, Sprachwechsel, Lagebild-Besuche) - Alle HTML-Seiten: analytics-events.js eingebunden - impressum.html: "UG i. G." -> "UG (haftungsbeschränkt)" - impressum-en.html: Footer-Jahr dynamisch, Firmenname korrigiert - .gitignore: lagebild/data/ ausgeschlossen (wird per Cron-Sync alle 5min vom Monitor regeneriert, gehört nicht ins Repo) - Doku-Updates: COOKIE_CONSENT_IMPLEMENTATION.md, DATENSCHUTZ_ANALYTICS.md Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Dieser Commit ist enthalten in:
73
analytics-events.js
Normale Datei
73
analytics-events.js
Normale Datei
@@ -0,0 +1,73 @@
|
||||
/**
|
||||
* AegisSight Analytics - Custom Events
|
||||
* Trackt wichtige Nutzerinteraktionen via Umami
|
||||
*/
|
||||
(function() {
|
||||
"use strict";
|
||||
|
||||
// Nur tracken wenn umami geladen ist
|
||||
function track(name, data) {
|
||||
if (typeof umami !== "undefined" && umami.track) {
|
||||
umami.track(name, data);
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
|
||||
// 1. Produkt-Tab geklickt
|
||||
document.querySelectorAll("[data-translate]").forEach(function(el) {
|
||||
if (el.closest(".products-section, .product-card, .tab-button")) {
|
||||
el.addEventListener("click", function() {
|
||||
var text = el.textContent.trim().substring(0, 50);
|
||||
track("Produkt-Interesse", { element: text });
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// 2. About-Tabs (Unternehmen, Mission, Kernkompetenzen, Versprechen)
|
||||
document.querySelectorAll(".about-tab, .tab-btn, [data-tab]").forEach(function(el) {
|
||||
el.addEventListener("click", function() {
|
||||
var tab = el.getAttribute("data-tab") || el.textContent.trim().substring(0, 30);
|
||||
track("About-Tab", { tab: tab });
|
||||
});
|
||||
});
|
||||
|
||||
// 3. Kontaktbereich erreicht (Scroll)
|
||||
var contactTracked = false;
|
||||
var observer = new IntersectionObserver(function(entries) {
|
||||
entries.forEach(function(entry) {
|
||||
if (entry.isIntersecting && !contactTracked) {
|
||||
contactTracked = true;
|
||||
track("Kontakt-Bereich-erreicht");
|
||||
}
|
||||
});
|
||||
}, { threshold: 0.5 });
|
||||
|
||||
var footer = document.querySelector("footer, .contact-section, #kontakt, #contact");
|
||||
if (footer) observer.observe(footer);
|
||||
|
||||
// 4. Sprachenwechsel
|
||||
document.querySelectorAll(".lang-switch, .language-btn, [data-lang]").forEach(function(el) {
|
||||
el.addEventListener("click", function() {
|
||||
var lang = el.getAttribute("data-lang") || el.textContent.trim();
|
||||
track("Sprachenwechsel", { sprache: lang });
|
||||
});
|
||||
});
|
||||
|
||||
// 5. Lagebild-Seite: Tab gewechselt
|
||||
if (window.location.pathname.indexOf("lagebild") > -1) {
|
||||
document.querySelectorAll(".tab-button, [data-tab]").forEach(function(el) {
|
||||
el.addEventListener("click", function() {
|
||||
var tab = el.getAttribute("data-tab") || el.textContent.trim().substring(0, 30);
|
||||
track("Lagebild-Tab", { tab: tab });
|
||||
});
|
||||
});
|
||||
track("Lagebild-Besuch");
|
||||
}
|
||||
|
||||
// 6. AccountForger Video aufgerufen
|
||||
if (window.location.pathname.indexOf("accountforger") > -1) {
|
||||
track("AccountForger-Video-Aufruf");
|
||||
}
|
||||
});
|
||||
})();
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren