Добавлена метрика яндекс
This commit is contained in:
parent
ec415de724
commit
db25a0ed18
19
index.html
19
index.html
@ -24,6 +24,25 @@
|
||||
/>
|
||||
<!-- Chart.js -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/chart.js"></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", "ym");
|
||||
|
||||
ym(104563496, "init", {
|
||||
clickmap:true,
|
||||
trackLinks:true,
|
||||
accurateTrackBounce:true,
|
||||
webvisor:true,
|
||||
trackHash:true,
|
||||
ut:"noindex"
|
||||
});
|
||||
</script>
|
||||
<noscript><div><img src="https://mc.yandex.ru/watch/104563496" style="position:absolute; left:-9999px;" alt="" /></div></noscript></search>
|
||||
<!-- /Yandex.Metrika counter -->
|
||||
<style>
|
||||
:root {
|
||||
--theme-bg: linear-gradient(to bottom right, #dbeafe, #ffffff, #e0e7ff);
|
||||
|
||||
40
script.js
40
script.js
@ -1,6 +1,17 @@
|
||||
// API ключ от WeatherAPI
|
||||
const API_KEY = "485eff906f7d473b913104046250710";
|
||||
|
||||
// Yandex Metrika counter ID (замените на свой)
|
||||
const YM_COUNTER_ID = 104563496; // Замените на реальный ID счетчика
|
||||
|
||||
// Функция для отправки событий в Yandex Metrika
|
||||
function ymSendEvent(eventName, params = {}) {
|
||||
if (typeof ym !== 'undefined' && YM_COUNTER_ID !== 'YOUR_COUNTER_ID') {
|
||||
ym(YM_COUNTER_ID, 'reachGoal', eventName, params);
|
||||
console.log(`Yandex Metrika event: ${eventName}`, params);
|
||||
}
|
||||
}
|
||||
|
||||
// Глобальные переменные для темы
|
||||
const themeButtons = {
|
||||
light: document.getElementById("theme-light"),
|
||||
@ -351,6 +362,9 @@ function updatePageTitle() {
|
||||
|
||||
// Автоматическая загрузка погоды при загрузке страницы
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
// Отправляем событие загрузки страницы
|
||||
ymSendEvent('page_load');
|
||||
|
||||
// Отображаем текущую дату
|
||||
displayCurrentDate();
|
||||
|
||||
@ -383,10 +397,12 @@ document.addEventListener("DOMContentLoaded", () => {
|
||||
window.addEventListener('beforeinstallprompt', (e) => {
|
||||
console.log('PWA install prompt available');
|
||||
deferredPrompt = e;
|
||||
ymSendEvent('pwa_install_prompt');
|
||||
});
|
||||
|
||||
window.addEventListener('appinstalled', (e) => {
|
||||
console.log('PWA installed successfully');
|
||||
ymSendEvent('pwa_installed');
|
||||
});
|
||||
|
||||
// Функция для проверки реального соединения
|
||||
@ -408,9 +424,11 @@ document.addEventListener("DOMContentLoaded", () => {
|
||||
if (!isOnline) {
|
||||
banner.classList.remove('hidden');
|
||||
console.log('Оффлайн режим активирован');
|
||||
ymSendEvent('offline_mode');
|
||||
} else {
|
||||
banner.classList.add('hidden');
|
||||
console.log('Онлайн режим восстановлен');
|
||||
ymSendEvent('online_mode');
|
||||
}
|
||||
}
|
||||
|
||||
@ -444,6 +462,9 @@ document.addEventListener("DOMContentLoaded", () => {
|
||||
getWeatherBtn.addEventListener("click", async () => {
|
||||
const city = citySelect.value;
|
||||
|
||||
// Отправляем событие выбора города
|
||||
ymSendEvent('city_select', { city: city });
|
||||
|
||||
// Сохраняем выбранный город в localStorage
|
||||
localStorage.setItem("selectedCity", city);
|
||||
|
||||
@ -461,6 +482,9 @@ getWeatherBtn.addEventListener("click", async () => {
|
||||
const data = await response.json();
|
||||
console.log("Данные получены успешно");
|
||||
|
||||
// Отправляем событие успешной загрузки данных
|
||||
ymSendEvent('weather_load_success', { city: city });
|
||||
|
||||
// Отображаем текущую погоду
|
||||
displayCurrentWeather(data);
|
||||
|
||||
@ -494,6 +518,13 @@ getWeatherBtn.addEventListener("click", async () => {
|
||||
console.error("Статус ответа:", error.response.status);
|
||||
console.error("Текст ответа:", error.response.statusText);
|
||||
}
|
||||
|
||||
// Отправляем событие ошибки загрузки
|
||||
ymSendEvent('weather_load_error', {
|
||||
city: city,
|
||||
error: error.message
|
||||
});
|
||||
|
||||
alert("Не удалось загрузить данные о погоде. Проверьте API ключ.");
|
||||
}
|
||||
});
|
||||
@ -697,6 +728,9 @@ function createTemperatureChart(hourlyData) {
|
||||
document.documentElement.classList.contains("dark") ||
|
||||
document.body.classList.contains("dark");
|
||||
|
||||
// Отправляем событие просмотра графика температуры
|
||||
ymSendEvent('chart_view', { chart_type: 'temperature' });
|
||||
|
||||
// Подготавливаем данные
|
||||
const labels = hourlyData.map((item) => {
|
||||
const hour = new Date(item.time).getHours();
|
||||
@ -880,6 +914,9 @@ function setTheme(theme) {
|
||||
html.setAttribute("data-theme", "light");
|
||||
}
|
||||
|
||||
// Отправляем событие смены темы
|
||||
ymSendEvent('theme_change', { theme: theme });
|
||||
|
||||
// Сохраняем выбранную тему
|
||||
localStorage.setItem("theme", theme);
|
||||
|
||||
@ -937,6 +974,9 @@ function createPrecipitationChart(hourlyData) {
|
||||
const ctx = document.getElementById("precipitationChart").getContext("2d");
|
||||
const colors = getThemeColors();
|
||||
|
||||
// Отправляем событие просмотра графика осадков
|
||||
ymSendEvent('chart_view', { chart_type: 'precipitation' });
|
||||
|
||||
// Подготавливаем данные
|
||||
const labels = hourlyData.map((item) => {
|
||||
const hour = new Date(item.time).getHours();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user