1 2function updateStructure() { 3 const width = window.innerWidth; 4 const structureA = document.getElementById('structureA'); 5 const structureB = document.getElementById('structureB'); 6 const contentToMove = document.getElementById('contentToMove'); 7 if (width < 1200) { 8 // å¦æå®½åº¦å°äº 1200pxï¼ç§»å¨å 容å°ç»æ B 9 // if (contentToMove.parentElement === structureB) { 10 structureA !== null && contentToMove !==null && structureA.appendChild(contentToMove); 11 // } 12 } else { 13 // å¦æå®½åº¦å¤§äºçäº 1200pxï¼æ¢å¤åå§ç»æ 14 // if (contentToMove.parentElement === structureA) { 15 structureB !== null && contentToMove !==null && structureB.appendChild(contentToMove); 16 // } 17 } 18} 19// çå¬é¡µé¢å è½½åçªå£è°æ´ 20window.addEventListener('load', updateStructure); 21window.addEventListener('resize', updateStructure); 22let currentIndex = 0; 23const items = document.querySelectorAll('.sp_carousel_item'); 24const totalItems = items.length; 25let intervalId; 26function showSlide(index) { 27 if (index < 0) { 28 currentIndex = totalItems - 1; 29 } else if (index >= totalItems) { 30 currentIndex = 0; 31 } else { 32 currentIndex = index; 33 } 34 35 const offset = -currentIndex * 100; 36 document.querySelector('.sp_carousel_inner').style.transform = `translateX(${offset}%)`; 37 38 // éç½®èªå¨è½®æ 39 resetAutoPlay(); 40} 41 42function nextSlide() { 43 showSlide(currentIndex + 1); 44} 45 46function prevSlide() { 47 showSlide(currentIndex - 1); 48} 49 50function resetAutoPlay() { 51 clearInterval(intervalId); 52 intervalId = setInterval(nextSlide, 2000); 53} 54 55// åå§åèªå¨è½®æ 56resetAutoPlay(); 57 58 59 60// 天æ°å¹¿æé»è¾ï¼æ¯ææ¨¡æ¿æ°ç»ï¼å®¹éè§£æéæ å JSONï¼ 61(function () { 62 var ticker = document.getElementById('sp_weather_ticker'); 63 if (!ticker) return; 64 var track = document.getElementById('wt-track'); 65 66 // è§£æçµæ´»çæ°ç»è¾å ¥ï¼JSON æ éæ å JS åé¢éï¼åå¼å·ãæªå å¼å·çé®ï¼ 67 function tryParseFlexibleArray(src) { 68 if (!src) return null; 69 if (Array.isArray(src)) return src; 70 var s = String(src).trim(); 71 // å¦æè¢«æ´ä½å 裹å¨å/åå¼å·éï¼å»æå¤å±å¼å· 72 if ((s.charAt(0) === '"' && s.charAt(s.length - 1) === '"') || (s.charAt(0) === "'" && s.charAt(s.length - 1) === "'")) { 73 s = s.slice(1, -1).trim(); 74 } 75 try { return JSON.parse(s); } catch (e) { } 76 77 // å¤ç常è§éæ åæ ¼å¼ï¼æåå¼å·æ¹ä¸ºåå¼å·ï¼ç»é®åå å¼å· 78 try { 79 s = s.replace(/"/g, '"').trim(); 80 // ç»é®åå å¼å·ï¼å¹é { key: æ , key:ï¼ 81 s = s.replace(/([\{,\s])(\w+)\s*:/g, function (_, a, b) { return a + '"' + b + '":'; }); 82 // æåå¼å·ä¸çå å®¹æ¿æ¢ä¸ºåå¼å· 83 s = s.replace(/'(.*?)'/g, function (_, inner) { return '"' + inner.replace(/"/g, '\\"') + '"'; }); 84 s = s.replace(/,\s*([\]}])/g, '$1'); 85 return JSON.parse(s); 86 } catch (e) { return null; } 87 } 88 89 // è¯»åæ¥æºï¼ä¼å window.WEATHER_ITEMSï¼æ°ç» æ å符串ï¼ï¼å ¶æ¬¡æ¨¡æ¿æ ç¾ [!--weather_items--]ï¼æå ticker.title 90 var items = JSON.parse(ticker.title).data 91 if (window.WEATHER_ITEMS) items = tryParseFlexibleArray(window.WEATHER_ITEMS); 92 // if (!items) { 93 // // 模æ¿å¸¸ææ°ç»æ¾å¨ title 屿§ä¸ï¼ä¼å ä» title è§£æï¼å ¶æ¬¡åå°è¯æ ç¾å段 94 // var rawFromTitle = ticker.getAttribute('title') || ''; 95 // var rawTag = '[!--weather_items--]'; 96 // items = tryParseFlexibleArray(rawFromTitle) || tryParseFlexibleArray(rawTag); 97 // } 98 99 // æå»º DOMï¼å°æ°ç»æ¸²æä¸ºä¸ä»½å 容 + ä¸ä»½å éç¨äºæ ç¼æ»å¨ 100 function escapeHtml(str) { 101 return String(str || '').replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, '''); 102 } 103 104 function buildItemsFromArray(arr) { 105 if (!arr || !arr.length) return false; 106 // æå»ºåä»¶ HTML 107 var html = ''; 108 for (var i = 0; i < arr.length; i++) { 109 var it = arr[i] || {}; 110 var title = escapeHtml(it.title || it.name || it.text || ''); 111 var rawSrc = it.src || it.value || it.img || ''; 112 // å¦ææ¯æ¬å°çåï¼ä¸ä»¥ http(s):// æ // æ / å¼å¤´ï¼ï¼åæ¼æ¥æ¬å°è·¯å¾å¹¶å .png 113 var finalSrc = ''; 114 if (rawSrc) { 115 var s = String(rawSrc).trim(); 116 117 // å½ä½æ¬å°æä»¶åï¼æ¼æ¥ç®å½ä¸åç¼ 118 finalSrc = '/skin/default/common/image/' + s + '.png'; 119 120 } 121 var src = escapeHtml(finalSrc); 122 html += '<div class="wt-item"><span class="wt-text">' + title + '</span>'; 123 if (src) html += '<img src="' + src + '" alt="" style="width:20px;height:20px;vertical-align:middle;margin-left:8px;">'; 124 html += '</div>'; 125 } 126 // å é HTMLï¼æ class æ¿æ¢ä¸º wt-item wt-clone 127 var cloneHtml = html.replace(/class=\"wt-item\"/g, 'class="wt-item wt-clone"'); 128 track.innerHTML = html + cloneHtml; 129 return true; 130 } 131 132 // çå¾ å ç´ å ææå¾çå è½½å®æåæ§è¡åè° 133 function waitForImages(root, cb) { 134 var imgs = root.querySelectorAll('img'); 135 if (!imgs || imgs.length === 0) { cb(); return; } 136 var loaded = 0, total = imgs.length;
137 imgs.forEach(function (img) { 138 if (img.complete) { loaded++; if (loaded === total) cb(); return; } 139 img.addEventListener('load', function () { loaded++; if (loaded === total) cb(); }); 140 img.addEventListener('error', function () { loaded++; if (loaded === total) cb(); }); 141 }); 142 } 143 144 function configureAnimation() { 145 track.style.setProperty('--marquee-distance', ''); 146 track.style.animationDuration = ''; 147 track.classList.remove('animate', 'no-anim'); 148 149 var viewport = ticker.querySelector('.wt-viewport'); 150 var viewW = viewport ? viewport.offsetWidth : ticker.offsetWidth; 151 152 // 计ç®åä»¶æ»å®½ï¼ä¸å«å éé¨åï¼ 153 var children = track.children; 154 if (!children || children.length === 0) { track.classList.add('no-anim'); return; } 155 // å设åä»¶å ä¸åï¼å + cloneï¼ï¼è¥æ²¡æ clone ååå ¨é¨ 156 var totalChildren = children.length; 157 var originalCount = Math.floor(totalChildren / 2) || totalChildren; 158 var originalWidth = 0; 159 for (var i = 0; i < originalCount; i++) { originalWidth += children[i].offsetWidth; } 160 161 if (originalWidth <= viewW) { 162 track.classList.add('no-anim'); 163 // éèå é 164 for (var j = originalCount; j < totalChildren; j++) { children[j].style.display = 'none'; } 165 track.style.transform = 'translateX(0)'; 166 return; 167 } 168 169 // æ¾ç¤ºå é 170 for (var j = originalCount; j < totalChildren; j++) { children[j].style.display = ''; } 171 172 var distance = originalWidth + 'px'; 173 var speed = 80; var duration = Math.max(6, Math.round(originalWidth / speed)); 174 track.style.setProperty('--marquee-distance', distance); 175 track.style.animationDuration = duration + 's'; 176 track.classList.add('animate'); 177 } 178 179 // åå§åï¼å¦æ items åå¨å渲æï¼å¦ååéå° title ææ¬æ¾ç¤º 180 if (items && items.length) { 181 buildItemsFromArray(items); 182 waitForImages(track, configureAnimation); 183 } else { 184 // ä¿æåæåææ¬åéé»è¾ 185 var defaultText = ticker.getAttribute('title') || ''; 186 track.innerHTML = ''; 187 var div = document.createElement('div'); div.className = 'wt-item'; div.textContent = window.WEATHER_TEXT || defaultText || 'æ£å¨å 载天æ°é¢æ¥â¦'; 188 var cloneNode = div.cloneNode(true); cloneNode.className = 'wt-item wt-clone'; 189 track.appendChild(div); track.appendChild(cloneNode); 190 requestAnimationFrame(configureAnimation); 191 } 192 193 // æå交äºï¼hover / touchï¼ 194 ticker.addEventListener('mouseenter', function () { track.classList.add('paused'); }); 195 ticker.addEventListener('mouseleave', function () { track.classList.remove('paused'); }); 196 ticker.addEventListener('touchstart', function () { track.classList.add('paused'); }, { passive: true }); 197 ticker.addEventListener('touchend', function () { track.classList.remove('paused'); }, { passive: true }); 198 199 // 坹夿´é²ï¼å¨å¤é¨è®¾ç½® window.WEATHER_ITEMS åå¯è°ç¨æ¤æ¹æ³éæ°æ¸²æ 200 window.renderWeatherItems = function (arr) { 201 var parsed = tryParseFlexibleArray(arr) || arr; 202 if (parsed && parsed.length) { items = parsed; buildItemsFromArray(items); waitForImages(track, configureAnimation); } 203 }; 204 205 // çå¬çªå£å¤§å°ååéæ°è®¡ç® 206 var to; window.addEventListener('resize', function () { clearTimeout(to); to = setTimeout(configureAnimation, 150); }); 207})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.