|
1 | 1 | (function(){ |
2 | | - // ===== Theme bootstrap (before any paints if possible) ===== |
| 2 | + // Early theme apply |
3 | 3 | try { |
4 | 4 | var htmlEl = document.documentElement; |
5 | 5 | var stored = localStorage.getItem('metridex.theme'); |
|
11 | 11 | } catch(e) {} |
12 | 12 |
|
13 | 13 | document.addEventListener('DOMContentLoaded', function(){ |
14 | | - // Existing smooth scroll + your code: |
15 | | -document.addEventListener('DOMContentLoaded', () => { |
16 | | - // 🔽 Плавная прокрутка к якорям |
17 | | - const links = document.querySelectorAll('nav ul li a[href^="#"]'); |
18 | | - for (const link of links) { |
19 | | - link.addEventListener('click', function (e) { |
20 | | - e.preventDefault(); |
21 | | - const targetId = this.getAttribute('href').substring(1); |
22 | | - const targetEl = document.getElementById(targetId); |
23 | | - if (targetEl) { |
24 | | - window.scrollTo({ |
25 | | - top: targetEl.offsetTop - 40, |
26 | | - behavior: 'smooth' |
27 | | - }); |
28 | | - } |
29 | | - }); |
30 | | - } |
31 | | - |
32 | | - // 🌓 Переключение темы |
33 | | - const themeToggle = document.getElementById('theme-toggle'); |
34 | | - const htmlEl = document.documentElement; |
35 | | - |
36 | | - themeToggle.addEventListener('click', () => { |
37 | | - const currentTheme = htmlEl.getAttribute('data-theme'); |
38 | | - const newTheme = currentTheme === 'dark' ? 'light' : 'dark'; |
39 | | - htmlEl.setAttribute('data-theme', newTheme); |
40 | | - themeToggle.textContent = newTheme === 'dark' ? '🌙' : '☀️'; |
41 | | - }); |
42 | | -}); |
| 14 | + // Year |
| 15 | + var y = document.getElementById('year'); if(y){ y.textContent = new Date().getFullYear(); } |
43 | 16 |
|
44 | | - |
45 | | - // ===== Reliable theme toggle ===== |
| 17 | + // Theme toggle |
46 | 18 | try { |
47 | | - var htmlEl = document.documentElement; |
48 | 19 | var btn = document.getElementById('theme-toggle'); |
49 | | - if(btn && htmlEl){ |
50 | | - // set initial icon based on theme |
51 | | - var current = htmlEl.getAttribute('data-theme') || 'dark'; |
52 | | - btn.textContent = (current === 'dark') ? '🌙' : '☀️'; |
| 20 | + if(btn){ |
| 21 | + var cur = document.documentElement.getAttribute('data-theme') || 'dark'; |
| 22 | + btn.textContent = (cur === 'dark') ? '🌙' : '☀️'; |
53 | 23 | btn.addEventListener('click', function(){ |
54 | | - var cur = htmlEl.getAttribute('data-theme') || 'dark'; |
55 | | - var next = (cur === 'dark') ? 'light' : 'dark'; |
56 | | - htmlEl.setAttribute('data-theme', next); |
57 | | - try { localStorage.setItem('metridex.theme', next); } catch(e) {} |
| 24 | + var now = document.documentElement.getAttribute('data-theme') || 'dark'; |
| 25 | + var next = (now === 'dark') ? 'light' : 'dark'; |
| 26 | + document.documentElement.setAttribute('data-theme', next); |
| 27 | + try{ localStorage.setItem('metridex.theme', next); }catch(e){} |
58 | 28 | btn.textContent = (next === 'dark') ? '🌙' : '☀️'; |
59 | 29 | }, {passive:true}); |
60 | 30 | } |
61 | | - } catch(e){ console && console.warn && console.warn('Theme toggle init failed', e); } |
| 31 | + } catch(e){} |
62 | 32 |
|
63 | | - // ===== Bot CTA normalizer (no layout changes) ===== |
64 | | - try { |
65 | | - var candidates = ['a[href="#bot"]','a[data-bot]','a#bot','#open-bot','#connect-bot']; |
66 | | - for (var i=0;i<candidates.length;i++){ |
67 | | - var el = document.querySelector(candidates[i]); |
| 33 | + // Normalize a placeholder CTA (if present) to the bot link without moving layout |
| 34 | + try{ |
| 35 | + var cands = ['a[href="#bot"]','a[data-bot]','a#bot','#open-bot','#connect-bot']; |
| 36 | + for (var i=0;i<cands.length;i++){ |
| 37 | + var el = document.querySelector(cands[i]); |
68 | 38 | if(el){ |
69 | 39 | el.setAttribute('href','https://t.me/MetridexBot'); |
70 | 40 | el.setAttribute('target','_blank'); |
71 | 41 | el.setAttribute('rel','noopener'); |
72 | 42 | break; |
73 | 43 | } |
74 | 44 | } |
75 | | - } catch(e){} |
| 45 | + }catch(e){} |
76 | 46 | }); |
77 | 47 | })(); |
0 commit comments