PageSourceSearch

https://www.tinsharp.com/upload/js/723b5897bb4a4363aed73c0b62fadf6e.js?v=1.92

js tinsharp.com collected 2026-10-07 15:24:08 UTC 55,708 bytes, 122 lines download raw bytes

1(function () {
2  document.addEventListener("DOMContentLoaded", function () {
3 //给body添加类名作为跨境的标识
4  document.body.id = 'Cross-border';
5
6  !function(){const e=location.hostname||"",t="dc.thefastmake.com"===e||e.startsWith("dc.");let o=!1;try{const e=top&&top.location&&top.location.hostname||"";o=/(^|\.)dc\.thefastmake\.com$/i.test(e)}catch(_){}if(t||o)return;"function"==typeof isFrontEnv&&isFrontEnv()&&(function(){const e=document.querySelector('[id^="c_static_001"] #Global_Code');if(!e)return;const t=e.closest('[id^="c_static_001"]');t&&t.classList.add("hide")}())}();
7
8  // 将文本邮箱转为 mailto 链接
9  !function(){var e=/([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})/g,t=/([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})/;for(var n=document.createTreeWalker(document.body,NodeFilter.SHOW_TEXT,{acceptNode:function(n){if(!n.nodeValue.trim())return NodeFilter.FILTER_REJECT;var r=n.parentNode;return r&&/^(a|script|style|input|textarea)$/i.test(r.nodeName)?NodeFilter.FILTER_REJECT:t.test(n.nodeValue)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}},!1),r=[];n.nextNode();)r.push(n.currentNode);r.forEach(function(t){var n=document.createDocumentFragment(),r=t.nodeValue,o=0;r.replace(e,function(e,t,a){a>o&&n.appendChild(document.createTextNode(r.slice(o,a)));var c=document.createElement("a");c.href="mailto:"+t,c.textContent=t,n.appendChild(c),o=a+e.length}),o<r.length&&n.appendChild(document.createTextNode(r.slice(o))),t.parentNode.replaceChild(n,t)})}();
10
11   //邮件链接处理 + 外链优化
12  const Language_Query = { 'zh_CN': '询盘邮件', 'zh_HN': '詢盤郵件', 'en': 'Inquiry email', 'de': 'Anfrage-E-Mail', 'fr': 'E-mail de demande', 'ru': 'Запрос по электронной почте', 'pt': 'E-mail de consulta', 'ko': '문의 메일', 'ja': 'お問い合わせメール', 'es': 'Correo electrónico de consulta', 'ar': 'البريد الإلكتروني للاستفسار', 'it': 'E-mail di richiesta', 'bn': 'তদন্ত ইমেল', 'da': 'Forespørgselsmail', 'idn': 'Email pertanyaan', 'th': 'อีเมลสอบถาม', 'vi': 'Email yêu cầu', 'tr': 'Soruşturma e-postası', 'nl': 'E-mail voor aanvraag', 'pl': 'Zapytanie e-mailowe', 'cs': 'Email s dotazem', 'ee': 'Päringu email', 'fi': 'Tiedustelu sähköposti', 'el': 'Επικοινωνία email', 'hu': 'Érdeklődő email', 'gg': 'Имейл за запитване', 'hr': 'E-pošta za upit', 'ga': 'Ríomhphost fiosrúcháin', 'ro': 'E-mail de întrebare', 'lv': 'Uzziņas e-pasts', 'mt': 'Email tal-Inkjesta', 'sk': 'E-mail s dopytom', 'si': 'E-pošta za povpraševanje', 'sv': 'Förfrågningsmail', 'lt': 'Užklausos el', 'ml': 'E-mel pertanyaan', 'bur': 'စုံစမ်းမေးမြန်းရန်အီးမေးလ်', 'kh': 'អ៊ីមែលសាកសួរ', 'la': 'ສອບຖາມອີເມລ໌', 'ph': 'Email ng pagtatanong', 'fa': 'ایمیل استعلام', 'uk': 'Електронна пошта для запиту', 'ta': 'விசாரணை மின்னஞ்சல்', 'mn': 'Лавлагааны имэйл', 'kk': 'Сұрау электрондық поштасы' };
13
14  const language = window.tenant?.language || 'en'; const inquirySubjectText = Language_Query[language] || Language_Query['en']; const currentDomain = window.location.hostname; function enhanceLinks(scope = document) { scope.querySelectorAll('a[href^="mailto:"]').forEach(link => { const rawHref = link.getAttribute('href'); if (rawHref && !rawHref.includes('?subject=')) { link.setAttribute('href', `${rawHref}?subject=${encodeURIComponent(inquirySubjectText)}`); } link.rel = 'nofollow'; }); scope.querySelectorAll('a[href^="tel:"]').forEach(link => { link.rel = 'nofollow'; }); scope.querySelectorAll('a').forEach(link => { const href = link.href; if (href.startsWith('mailto:') || href.startsWith('tel:') || href.includes('javascript:')) return; const isExternal = !href.includes(currentDomain); if (isExternal) { link.target = '_blank'; link.rel = 'nofollow'; } }); } enhanceLinks(); const waitForServiceGroup = new MutationObserver(mutations => { for (const mutation of mutations) { for (const node of mutation.addedNodes) { if (node.nodeType !== 1) continue; if (node.matches('.service_group') || node.querySelector('.service_group')) { const group = node.matches('.service_group') ? node : node.querySelector('.service_group'); if (group) { const observer = new MutationObserver(muts =>
14 { muts.forEach(mut => { mut.addedNodes.forEach(n => { if (n.nodeType === 1) { enhanceLinks(n); } }); }); }); observer.observe(group, { childList: true, subtree: true }); enhanceLinks(group); waitForServiceGroup.disconnect(); } } } } }); waitForServiceGroup.observe(document.body, { childList: true, subtree: true }); 
15
16  //检测页面是否包含了H1如果没有自动添加一个H1标签
17  (function() { if (document.querySelector('h1')) return; const sourceEl = document.querySelector('#Image_Keywords .Global-right'); if (!sourceEl) return; const text = sourceEl.textContent.trim(); if (!text) return; const h1 = document.createElement('h1'); h1.textContent = text; h1.classList.add('hide'); const body = document.body; if (body.firstChild) { body.insertBefore(h1, body.firstChild); } else { body.appendChild(h1); } })(); 
18
19  //电话号码自动添加链接
20    (function () { const master = /(^|[^0-9A-Za-z])((?:(?:\+?86|0086)[-\s]?(?:1\d{10}|1\d{2}[-\s]?\d{4}[-\s]?\d{4}))|(?:0\d{2,3}[-\s]?\d{7,8})|(?:(?:\+86|0086)[-\s]?(?:[1-9]\d{1,2})[-\s]?\d{7,8})|(?:(?:\+?86|0086)?\s*(?:400|800)(?:[-\s]?\d){7})|(?:\+(?!86)\d{1,3}(?:[-\s]?\d){6,14}))(?!\d)/g; const labelExt = /\b(分机|转|ext\.?|extension|x)\s*[::\-]?\s*(\d{1,6})\b/i; const tailHyphenExt = /-(\d{1,6})\s*$/;
20 function invalid(full) { const t = full.replace(/\s+/g, ''); if (/\+\(00?\d*\)/.test(t)) return true; if (/^\s*\+86\s*0/.test(full)) return true; return false; } function splitExt(s) { const m1 = s.match(labelExt); if (m1) { const core = s.slice(0, m1.index) + s.slice(m1.index + m1[0].length); return { core, ext: m1[2] }; } const m2 = s.match(tailHyphenExt); if (m2) return { core: s.slice(0, s.length - m2[0].length), ext: m2[1] }; return { core: s, ext: '' }; } function toHref(raw) { const { core, ext } = splitExt(raw); let norm = core.trim(); norm = norm.replace(/^\s*0086\b/, '+86 '); const keepPlus = /^\s*\+/.test(norm); const digits = norm.replace(/[^\d]/g, ''); return 'tel:' + (keepPlus ? '+' : '') + digits + (ext ? ';ext=' + ext : ''); } function isEligibleTextNode(node) { const p = node.parentNode; if (!p) return false; if (p.closest('a,script,style,textarea,[data-whatsapp]')) return false; if (p.closest('[contenteditable="true"]')) return false; return /\S/.test(node.nodeValue || ''); } function handleText(textNode) { const text = textNode.nodeValue; if (/\+\(00?\d*\)/.test(text)) return; master.lastIndex = 0; let m, last = 0, any = false; const frag = document.createDocumentFragment(); while ((m = master.exec(text))) { const lead = m[1] || ''; const full = m[2]; if (invalid(full)) continue; const start = m.index + lead.length; const end = start + full.length; if (/^\s*0/.test(full)) { const left = text.slice(Math.max(0, start - 6), start); if (/(?:\+86|0086)\s*$/.test(left)) { continue; } } const t = full.trim(); const isCnMobile = /^(?:\+?86|0086)?\s*(?:1\d{10}|1\d{2}[-\s]?\d{4}[-\s]?\d{4})$/.test(t); const isCnLandline = /^(?:0\d{2,3}[-\s]?\d{7,8}|(?:\+86|0086)\s*(?:[1-9]\d{1,2})[-\s]?\d{7,8})$/.test(t); const isService = /^(?:\+?86|0086)?\s*(?:400|800)(?:[-\s]?\d){7}$/.test(t); const isIntl = /^\+(?!86)\d{1,3}(?:[-\s]?\d){6,14}$/.test(t); if (!(isCnMobile || isCnLandline || isService || isIntl)) continue; if (start > last) frag.appendChild(document.createTextNode(text.slice(last, start))); const a = document.createElement('a'); a.href = toHref(full); a.rel = 'nofollow'; a.textContent = full; frag.appendChild(a); any = true; last = end; } if (!any) return; if (last < text.length) frag.appendChild(document.createTextNode(text.slice(last))); textNode.parentNode.replaceChild(frag, textNode); } const tw = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, { acceptNode(node) { return isEligibleTextNode(node) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT; } }); const targets = []; for (let n = tw.nextNode(); n; n = tw.nextNode()) targets.push(n); for (const t of targets) handleText(t); })(); 
21 
22
23  //WhatsApp号码自动添加链接
24  (function(){ const master = /([^\dA-Za-z]|^)((?:(?:\+?86|0086)[-\s]?(?:1\d{10}|1\d{2}[-\s]?\d{4}[-\s]?\d{4}))|(?:0\d{2,3}[-\s]?\d{7,8})|(?:(?:\+86|0086)[-\s]?(?:[1-9]\d{1,2})[-\s]?\d{7,8})|(?:(?:\+?86|0086)?\s*(?:400|800)(?:[-\s]?\d){7})|(?:\+(?!86)\d{1,3}(?:[-\s]?\d){6,14}))(?!\d)/g; const CC = '86'; const TXT = 'Hello'; const hasDigits = s => /\d/.test(String(s||'')); function norm(s){ return String(s||'') .replace(/&nbsp;/gi,' ') .replace(/[\u200B-\u200D\uFEFF]/g,'') .replace(/[()]/g, m => m === '(' ? '(' : ')') .replace(/\s+/g,' '); } function toE164(raw, cc = CC){ if(!raw) return null; let s = raw.trim().replace(/^00/,'+'); if(/^\+86/.test(s)) return s.replace(/[^\d+]/g,''); const plusDigits = s.replace(/[^\d+]/g,''); if(/^\+\d{6,15}$/.test(plusDigits)) return plusDigits; let digits = plusDigits.replace(/[^\d]/g,''); if(!digits) return null; if(cc==='86' && /^86(1\d{10})$/.test(digits)) return '+86' + RegExp.$1; if(cc==='86' && /^1\d{10}$/.test(digits)) return '+86' + digits; if(/^0\d+/.test(digits)) return '+' + cc + digits.replace(/^0+/,''); if(/^\d{6,15}$/.test(digits)) return '+' + cc + digits; return null; } function buildHref(e164){ const num = String(e164||'').replace(/^\+/,''); return `https://api.whatsapp.com/send?phone=${num}&text=${encodeURIComponent(TXT)}`; } function firstTextHit(root){ const SKIP = new Set(['A','SCRIPT','STYLE','TEXTAREA','CODE','PRE','INPUT']); const tw = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, { acceptNode(n){ if(!n.nodeValue || !n.nodeValue.trim()) return NodeFilter.FILTER_REJECT;
24 const p = n.parentElement; if(!p) return NodeFilter.FILTER_REJECT; if(SKIP.has(p.tagName)) return NodeFilter.FILTER_REJECT; if(p.closest('a')) return NodeFilter.FILTER_REJECT; return NodeFilter.FILTER_ACCEPT; } }); let t; while((t = tw.nextNode())){ const orig = t.nodeValue; master.lastIndex = 0; const m = master.exec(orig); master.lastIndex = 0; if(!m) continue; const lead = m[1] || ''; const full = m[2] || ''; let s = m.index + lead.length; let e = s + full.length; if(s > 0 && orig[s-1] === '+' && full[0] !== '+'){ s = s - 1; } const raw = orig.slice(s, e); return { node: t, start: s, end: e, raw }; } return null; } function wrap(textNode, s, e, href, text){ const whole = textNode.nodeValue; const b = document.createTextNode(whole.slice(0, s)); const a = document.createElement('a'); a.href = href; a.target = '_blank'; a.rel = 'noopener noreferrer nofollow'; a.textContent = text; a.setAttribute('data-wa-made','1'); const af = document.createTextNode(whole.slice(e)); const p = textNode.parentNode; p.insertBefore(b, textNode); p.insertBefore(a, textNode); p.insertBefore(af, textNode); p.removeChild(textNode); return a; } function renderDataWA(scope = document){ const hosts = scope.querySelectorAll('[data-whatsapp]'); let created = 0; hosts.forEach(h=>{ if(h.querySelector('a[data-wa-made="1"]')) return; const hit = firstTextHit(h); if(!hit) return; const e164 = toE164(hit.raw); if(!e164) return; wrap(hit.node, hit.start, hit.end, buildHref(e164), hit.raw); created++; }); return created; } function textToE164ByRegex(txt){ master.lastIndex = 0; const m = master.exec(txt); master.lastIndex = 0; if(!m) return null; let s = m.index + (m[1] ? m[1].length : 0); let e = s + (m[2] ? m[2].length : 0); if(s > 0 && txt[s-1] === '+' && txt.slice(s, e)[0] !== '+'){ s = s - 1; } const raw = txt.slice(s, e); return toE164(raw); } function reconcileAll(scope = document){ const links = scope.querySelectorAll('a[href*="wa.me"],a[href*="api.whatsapp.com"]'); let fixed = 0; links.forEach(a=>{ const txt = (a.textContent || '').trim(); if(!hasDigits(txt)) return; const e164 = textToE164ByRegex(txt); if(!e164) return; const need = buildHref(e164); if(a.getAttribute('href') !== need){ a.setAttribute('href', need); fixed++; } }); return fixed; } function runAll(scope){ return { created: renderDataWA(scope), corrected: reconcileAll(scope) }; } if(!window.WAHelper) window.WAHelper = {}; window.WAHelper.runAll = runAll; function observe(){ const deb = new WeakMap(); const run = h => { clearTimeout(deb.get(h)); deb.set(h, setTimeout(()=>runAll(h), 120)); }; const oh = new MutationObserver(ms=>{ const set = new Set();
24 ms.forEach(m=>{ if(m.target && m.target.nodeType === 1){ const h = m.target.closest('[data-whatsapp]'); if(h) set.add(h); } }); set.forEach(run); }); document.querySelectorAll('[data-whatsapp]').forEach(h=>{ oh.observe(h, { childList:true, subtree:true, characterData:true }); run(h); }); const ob = new MutationObserver(ms=>{ let needGlobal = false; ms.forEach(m=>{ if(m.addedNodes && m.addedNodes.length) needGlobal = true; }); if(needGlobal) runAll(document); }); ob.observe(document.body, { childList:true, subtree:true }); } if(document.readyState === 'loading'){ document.addEventListener('DOMContentLoaded', ()=>{ runAll(document); observe(); }); }else{ runAll(document); observe(); } })(); 
25
26
27
28  //屏蔽A标签的链接
29  if (document.querySelector('#Block_links .Global-right')) { document.body.addEventListener('click', function (e) { const a = e.target.closest('a'); if (a) e.preventDefault(); }); }
30 
31  //SVG调取
32  if (!customElements.get('svg-icon')) { customElements.define('svg-icon', class extends HTMLElement { connectedCallback() { const name = this.getAttribute('name'); if (!name) { return; } const sourceSvg = document.querySelector(`svg[data-icon="${name}"]`); if (sourceSvg) { this.innerHTML = sourceSvg.outerHTML; } } }); }
33 
34});
35
36  //Tab切换(支持 hover 和 click 两组)(#tab-hover #tab-click)
37  function bindSyncEvent(e,t){const n=document.getElementById(e);if(!n)return;const c=n.querySelectorAll(".p_list");c.forEach(e=>{const t=e.querySelectorAll(".p_loopitem");t[0]&&t[0].classList.add("active")}),n.querySelectorAll(".p_loopitem").forEach(e=>{e.addEventListener(t,()=>{const n=Array.from(e.parentElement.children).indexOf(e);c.forEach(e=>{const t=e.querySelectorAll(".p_loopitem");t.forEach(e=>e.classList.remove("active")),t[n]&&t[n].classList.add("active")})})})}document.addEventListener("DOMContentLoaded",()=>{bindSyncEvent("tab-hover","mouseenter"),bindSyncEvent("tab-click","click")});
38
39
40
41  //智慧客服图标位置移动 
42  (function () { const $icon = $('#myIcon'); const iconId = 'smartIconPos'; const directionLock = 'both'; const snapPadding = 25; const saved = localStorage.getItem(iconId); if (saved) { const pos = JSON.parse(saved); $icon.css({ left: pos.left, top: pos.top }); } else { $icon.css({ left: '100px', top: '100px' }); } $(document).on('mousedown touchstart', '.smartIcon', function (e) { if (e.type === 'touchstart' && e.originalEvent.touches.length !== 1) return; e.preventDefault(); const $el = $(this); const evt = e.type === 'touchstart' ? e.originalEvent.touches[0] : e; let startX = evt.clientX; let startY = evt.clientY; const startLeft = parseInt($el.css('left')) || 0; const startTop = parseInt($el.css('top')) || 0; const winW = window.innerWidth; const winH = window.innerHeight; const elW = $el.outerWidth(); const elH = $el.outerHeight(); let isDragging = false; let animId; function preventScroll(ev) { if (isDragging) ev.preventDefault(); } document.addEventListener('touchmove', preventScroll, { passive: false }); const drag = e => { const ev = e.type === 'touchmove' ? e.originalEvent.touches[0] : e; const dx = ev.clientX - startX; const dy = ev.clientY - startY; if (!isDragging && Math.abs(dx) + Math.abs(dy) > 5) { isDragging = true; $el.addClass('being-dragged').css('transition', 'none'); $('body').addClass('no-scroll'); } if (!isDragging) return; if (animId) cancelAnimationFrame(animId); animId = requestAnimationFrame(() => { let newLeft = startLeft + dx; let newTop = startTop + dy; newLeft = Math.max(0, Math.min(winW - elW, newLeft)); newTop = Math.max(0, Math.min(winH - elH, newTop)); if (directionLock === 'horizontal') { $el.css({ left: newLeft }); } else if (directionLock === 'vertical') { $el.css({ top: newTop }); } else { $el.css({ left: newLeft, top: newTop }); } }); }; const stop = () => { if (animId) cancelAnimationFrame(animId); $(window).off('.smartIconDrag'); $(document).off('.smartIconDrag'); document.removeEventListener('touchmove', preventScroll); if (isDragging) { const l = parseInt($el.css('left')) || 0; const t = parseInt($el.css('top')) || 0; const snapLeft = l < (winW / 2 - elW / 2) ? snapPadding : winW - elW - snapPadding; $el.css({ left: snapLeft, transition: 'all 0.3s' }); localStorage.setItem(iconId, JSON.stringify({ left: snapLeft + 'px', top: t + 'px' })); setTimeout(() => $el.removeClass('being-dragged'), 100); $el.data('wasDragged', true); } isDragging = false; $('body').removeClass('no-scroll'); }; $(window).on('mousemove.smartIconDrag touchmove.smartIconDrag', drag); $(window).on('mouseup.smartIconDrag touchend.smartIconDrag', stop); $(document).on('keydown.smartIconDrag', e => { if (e.key === 'Escape') stop(); }); }); $(document).on('click', '.smartIcon', function (e) { if ($(this).data('wasDragged')) { e.preventDefault(); e.stopImmediatePropagation(); $(this).removeData('wasDragged'); return false; } }); })();
43
44  // 替换表单验证提示文本
45  function replaceFeedbackTexts() { const right = document.querySelector("#Form_Validation .Global-right"); const msg = right ? right.textContent.trim() : ""; document.querySelectorAll(".invalid-feedback").forEach(el => { const txt = el.textContent.trim(); if (txt.includes("内容不能为空") || txt.includes("请输入内容")) { el.textContent = msg || "请输入内容"; } }); } replaceFeedbackTexts(); new MutationObserver(replaceFeedbackTexts).observe(document.body, { childList: true, subtree: true }); 
46
47  //循环体没有内容时
48  const Empty_Container =document.querySelector('#Empty_Container .Global-right');
49  if(Empty_Container){const t=Empty_Container.textContent.trim();if(t)document.querySelectorAll('.p_nodata, .pl_empty').forEach(e=>{const d=e.querySelector('div:first-child');d&&d.remove();const b=document.createElement('blank');b.className='No-box';const i=document.createElement('div');i.className='icon-box';i.innerHTML=`<svg t="1750770104616" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7283" width="160" height="160"><path d="M457 335.8v165.6l397.7 1.1V372.8z" fill="#CBCBCB" p-id="7284"></path><path d="M457 335.8V485l-321.5-32.7v-46.8z" fill="#B9B9B9" p-id="7285"></path><path d="M136.6 405.5v432.6l380.3 76.3V442.5z" fill="#D3D3D3" p-id="7286"></path><path d="M136.6 405.5l-74 160.4 380.3 76.3 74-199.7z" fill="#E9E9E9" p-id="7287"></path><path d="M855.8 375v432.6L516.9 914.4V442.5z" fill="#C9C9C9" p-id="7288"></path><path d="M855.8 375l103.5 168.8-338.8 106.8-103.6-208.1z" fill="#DDDDDD" p-id="7289"></path><path d="M618.8 90.7l53.1-19.5-4.7 89.8-30.6 8.9zM688.5 176.6l17.7 13.6L789 92.6l-61.5-29.2zM752.7 215.9l11.4 31.6 95.3-31.6-10.9-63.2z" fill="#E9E9E9" p-id="7290"></path></svg>`;const n=document.createElement('div');n.className='No-words';const p=document.createElement('p');p.className='text-No';p.textContent=t;n.appendChild(p);b.appendChild(i);b.appendChild(n);e.appendChild(b);});}
50
51
52  // 在线客服添加返回顶部
53  const $backToTop = $('<div id="backToTop" class="item_con clearfix"><div class="service_item"><p class="service_icon"><svg t="1750506118559" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5522" width="200" height="200"><path d="M921.395 76.762h-818.79c-20.982 0-38.381-17.4-38.381-38.381S81.624 0 102.604 0h818.791c20.982 0 38.381 17.4 38.381 38.38s-17.4 38.382-38.38 38.382zM673.2 1024H355.918c-16.376 0-31.728-6.14-43.498-17.911s-17.911-27.122-17.911-43.498V660.66H139.962c-16.376 0-31.728-6.14-43.498-17.91s-17.911-27.123-17.911-43.499c0-15.352 5.629-30.193 16.376-41.45l372.038-405.814c11.258-12.282 26.098-18.935 42.474-19.958 16.376-0.512 32.24 5.117 44.01 15.864l2.559 2.559 373.573 406.836c11.259 12.282 16.888 27.635 15.864 44.01-0.511 16.376-7.676 31.728-19.958 42.475-11.258 10.235-26.099 16.376-41.451 16.376h-149.43v301.929c0 16.376-6.14 31.728-17.91 43.498-11.77 12.282-27.123 18.423-43.499 18.423zM371.27 947.238h286.577V583.9H849.24L512 216.468 174.76 583.9h196.51v363.338z" p-id="5523"></path></svg></p></div></div>');
54  function isShowBackToTopConditionMet() { return !!document.querySelector("#Top_up .Global-right"); } function bindBackToTopClick() { $backToTop.off("click").on("click", () => { if (window._smoothScrollState && typeof window._smoothScrollState.i === "function") { const state = window._smoothScrollState; state.t = 0; if (!state.o) { state.o = true; requestAnimationFrame(state.i); } } else { window.scrollTo({ top: 0, behavior: 'smooth' }); } }); } function insertBackToTopButton() { if (!isShowBackToTopConditionMet()) return false; const $group = $(".pl_service4 .service_group").last(); if ($group.length && !$group.find("#backToTop").length) { $group.append($backToTop); bindBackToTopClick(); return true; } return false; } if (!insertBackToTopButton()) { const observer = new MutationObserver(() => { insertBackToTopButton() && observer.disconnect(); }); observer.observe(document.body, { childList: true, subtree: true }); } if (window.innerWidth < 768 && isShowBackToTopConditionMet()) { if (!$('#backToTop').length) { $('body').append($backToTop); bindBackToTopClick(); } } 
55
56  //在线客服4样式切换
57  const serviceClassMap = { "1": "Service1", "2": "Service2", "3": "Service3" }; const getCurrentServiceClassKey = () => { const el = document.querySelector('#Right_Service .Global-right'); if (!el) return null; const val = el.textContent.trim(); return serviceClassMap.hasOwnProperty(val) ? val : null; }; const ServiceObserver = new MutationObserver((mutationsList) => { const currentKey = getCurrentServiceClassKey(); if (!currentKey) return; mutationsList.forEach((mutation) => { if (mutation.type === "childList") { mutation.addedNodes.forEac
57h((node) => { if (node instanceof Element) { const targetElements = node.matches(".pl_service4") ? [node] : Array.from(node.querySelectorAll(".pl_service4")); targetElements.forEach((element) => { element.classList.add(serviceClassMap[currentKey]); }); } }); } }); }); ServiceObserver.observe(document.body, { childList: true, subtree: true }); function updateServiceClassFromDom() {const key = getCurrentServiceClassKey(); } updateServiceClassFromDom(); 
58
59
60  // 导航栏控制下拉加类名
61  const updateFirstDiv=()=>{if(!document.querySelector("#Navigation_Class .Global-right"))return;const e=document.querySelector(".main>div:first-child");e&&e.classList.toggle("active",window.scrollY>50)};window.addEventListener("scroll",updateFirstDiv),window.addEventListener("load",updateFirstDiv),updateFirstDiv();
62
63
64  //禁止全站的文字复制和图片下载
65  if(document.querySelector('#Prohibit_Copy .Global-right')){document.oncontextmenu=document.oncut=document.onpaste=()=>!1;document.addEventListener("selectstart",e=>{const t=e.target?.closest?.("a[href],.copy-ok");t||e.preventDefault()});document.oncopy=e=>{const s=window.getSelection(),n=s?.anchorNode;if(n){const el=n.nodeType===3?n.parentElement:n,r=el?.closest?.('a[href],.copy-ok');if(r)return!0}e.preventDefault();return!1};$(document).on("dragstart",e=>"IMG"===e.target.nodeName&&e.preventDefault());$(document).on("touchstart",e=>"IMG"===e.target.tagName&&e.preventDefault())}
66
67  //图片alt标题设置
68  document.addEventListener("DOMContentLoaded", () => { const e = document.querySelector("#Image_Keywords .Global-right"); if (!e) return; const t = e.textContent.trim(); if (!t) return; document.querySelectorAll("img").forEach(e => { const n = e.getAttribute("alt")?.trim() ?? ""; (!n || n === "图片名称") && e.setAttribute("alt", t); const o = e.getAttribute("title")?.trim() ?? ""; (!o || o === "图片名称") && e.setAttribute("title", t) }) });
69
70  //屏蔽页面上图片的alt/title提示
71  document.addEventListener('DOMContentLoaded', () => { const e = document.querySelector('#Shield_alt .Global-right'); if (!e) return; const imgs = document.querySelectorAll('img'); imgs.forEach(img => { let originalTitle = img.getAttribute('title'); img.addEventListener('mouseenter', () => { if (img.hasAttribute('title')) { originalTitle = img.getAttribute('title'); img.removeAttribute('title'); } }); img.addEventListener('mouseleave', () => { if (originalTitle) { img.setAttribute('title', originalTitle); } }); }); }); 
72
73  //页面顺滑的滚动 
74  if (document.querySelector('#Smooth_Scrolling .Global-right')) { const targetEl = document.querySelector('#Smooth_Scrolling .Global-right'); let _t = window.scrollY, _n = window.scrollY, _o = false; let e = parseFloat(targetEl.getAttribute('data-smooth')) || 0.05; e = Math.max(0.01, Math.min(e, 1)); function i() { const c = _t - _n; _n += c * e; window.scrollTo(0, _n); if (Math.abs(c) > 0.5) { requestAnimationFrame(i); } else { _n = _t; _o = false; } } Object.defineProperty(window, "_smoothScrollState", { configurable: true, enumerable: true, get() { return { get t() { return _t; }, set t(val) { _t = val; }, get n() { return _n; }, set n(val) { _n = val; }, get o() { return _o; }, set o(val) { _o = val; }, e, i, }; } }); window.addEventListener('wheel', eEvt => { const maxScroll = document.documentElement.scrollHeight - window.innerHeight; _t += eEvt.deltaY; _t = Math.max(0, Math.min(_t, maxScroll)); if (!_o) { _o = true; requestAnimationFrame(i); } eEvt.preventDefault(); }, { passive: false }); window.addEventListener('scroll', () => { if (!_o) { _t = _n = window.scrollY; } }); window.addEventListener('load', () => { _t = _n = window.scrollY; }); window.addEventListener('resize', () => { const maxScroll = document.documentElement.scrollHeight - window.innerHeight; _t = Math.min(_t, maxScroll); }); } 
75
76
77  //屏蔽手机端访问
78  if(document.querySelector('#Block_Mobile .Global-right')&&/Android|iPhone|iPad|iPod|Windows Phone/i.test(navigator.userAgent)){document.body.innerHTML='<div style="display:flex;justify-content:center;align-items:center;height:100vh;font-size:1.5rem;padding:20px;box-sizing:border-box;text-align:center;background:#f5f5f5;color:#333;">为了效果更好,请采用电脑端进行预览</div>';document.body.style.margin=0;document.body.style.overflow='hidden'}
79
80
81
82  //移除客服热线设置
83  const observer = new MutationObserver((mutations) => { const targets = document.querySelectorAll('.pl_service4 > .item_con.clearfix');
83 if (targets.length) { targets.forEach(el => el.remove()); observer.disconnect(); } }); observer.observe(document.body, { childList: true, subtree: true }); 
84
85  //开启在线客服名称
86  var syncObserver = new MutationObserver(() => { const n = document.querySelectorAll('#Service_box .Service_name'), t = document.querySelectorAll('.pl_service4 .item_con'); if (n.length && t.length) { n.forEach((e, i) => { const container = t[i]; if (!container) return; const r = container.querySelector('.p_doThirdFunc'); if (r) { r.insertAdjacentHTML('afterbegin', e.innerHTML); } }); syncObserver.disconnect(); } }); syncObserver.observe(document.body, { childList: !0, subtree: !0 });
87
88
89  //手风琴效果
90  function setupAccordion(c) { const i = c.children, t = i.length, e = parseFloat(c.dataset.openWidth || "60"), n = parseInt(c.dataset.openIndex || "0"), r = t > 1 ? (100 - e) / (t - 1) : 0, s = c.dataset.swiperOpen; if (s) { const t = window.innerWidth, o = t < 768 ? "mo" : t < 1025 ? "ipad" : "pc"; if (s.split(/[\s,]+/).includes(o)) return; } function a(n) { Array.from(i).forEach((t, o) => { t.style.flex = o === n ? e : r; t.classList.toggle("active", o === n); }); } a(n); Array.from(i).forEach((t, e) => { t.addEventListener("mouseenter", () => { c.dataset.openIndex = e; a(e); }); }); } document.addEventListener("DOMContentLoaded", () => { document.querySelectorAll(".accordion").forEach(setupAccordion); }); 
91
92  //表格响应式
93  document.querySelectorAll('.Table_Adaptation').forEach(root=>{ root.querySelectorAll('table').forEach(table=>{ if(table.parentElement?.classList.contains('table-scroll')) return; const wrap = document.createElement('div'); wrap.className = 'table-scroll'; table.replaceWith(wrap); wrap.appendChild(table); }); });
94  
95  //可视化排版的FAQ
96 document.addEventListener('click', e => { const q = e.target.closest('.v-faq-q'); if (!q) return; const item = q.parentElement; item.classList.toggle('open'); const tg = q.querySelector('.v-faq-toggle'); if (tg) tg.textContent = item.classList.contains('open') ? '−' : '+'; });
97
98
99  //图片点击放大 swiper切换
100  (function () { const popupHTML = ` <div class="modelTost"> <div class="modelTostChile Printing"> <span class="modelClose">×</span> <div class="swiper-container mainSwiper"> <div class="swiper-wrapper"></div> <div class="swiper-button-next"></div> <div class="swiper-button-prev"></div> </div> <div class="swiper-container thumbSwiper"> <div class="swiper-wrapper"></div> </div> </div> </div>`; let mainSwiper = null, thumbSwiper = null; function cleanSrc(src) { if (!src) return ''; return src.replace(/(_\d+x[^.]+)?\.(png|jpe?g|webp)$/i, '.$2').replace(/\.(png|jpe?g|webp)\.\1$/i, '.$1'); }   function closePopup() { if (mainSwiper) { mainSwiper.destroy(true, true); mainSwiper = null; } if (thumbSwiper) { thumbSwiper.destroy(true, true); thumbSwiper = null; } const $modal = $(".modelTost"); $modal.find(".modelTostChile").css({ animation: "modelTost_zoomOut 0.2s ease forwards" }); $modal.css({ animation: "modelTost_fadeOut 0.2s ease forwards" }); setTimeout(() => { $modal.remove(); $(document).off("keydown.modelTostKey"); }, 200); } $(document).on("click", ".modelTostParents img", function () { const $parent = $(this).closest(".modelTostParents"); if (!$parent.length) return; const images = $parent.find("img").map((_, el) => cleanSrc($(el).attr("src"))).get(); const clickedSrc = cleanSrc($(this).attr("src")); const activeIndex = images.indexOf(clickedSrc); $(".modelTost").remove(); $("body").append(popupHTML); const $mainWrapper = $(".mainSwiper .swiper-wrapper").empty(); const $thumbWrapper = $(".thumbSwiper .swiper-wrapper").empty(); images.forEach(src => { $mainWrapper.append(` <div class="swiper-slide"> <img src="${src}" style="max-width:100%;max-height:100%;object-fit:contain;" /> </div>`); $thumbWrapper.append(` <div class="swiper-slide" style="width:auto;cursor:pointer;"> <img src="${src}" style="height:100%;object-fit:cover;border:2px solid transparent;" /> </div>`); }); thumbSwiper = new Swiper(".thumbSwiper", { spaceBetween: 10, slidesPerView: "auto", freeMode: true, watchSlidesProgress: true }); mainSwiper = new Swiper(".mainSwiper", { initialSlide: activeIndex >= 0 ? activeIndex : 0, navigation: { nextEl: ".swiper-button-next", prevEl: ".swiper-button-prev" }, slidesPerView: 1, loop: true, observer: true, observeParents: true, thumbs: { swiper: thumbSwiper } }); $(document).on("keydown.modelTostKey", function (e) { if (!mainSwiper) return; if (e.key === "ArrowLeft") mainSwiper.slidePrev(); else if (e.key === "ArrowRight") mainSwiper.slideNext(); else if (e.key === "Escape") closePopup(); }); }); $(document).on("click", ".modelTost .modelClose", closePopup); $(document).on("click", ".modelTost", function (e) { if ($(e.target).hasClass("modelTost")) closePopup(); }); })(); 
101
102
103  //邮箱自动补充和号码区号下拉
104  document.addEventListener("DOMContentLoaded",function(){ const d=['gmail.com','outlook.com','hotmail.com','live.com','yahoo.com','icloud.com','aol.com','protonmail.com','zoho.com','yandex.com','mail.ru']; document.querySelectorAll('.clueEmail').forEach(function(i){ const l=i.parentNode.querySelector('.emailSuggestList'); init(i,l); }); function init(i,l){ let a=-1; i.addEventListener('focus',function(){ if(i.value.trim()===''){hide();} else{onInput();} }); i.addEventListener('input',onInput); i.addEventListener('keydown',function(e){ const items=l.querySelectorAll('li'); if(l.style.display!=='block')return; if(e.key==='ArrowDown'){ a=(a+1)%items.length;setActive(items);e.preventDefault(); }else if(e.key==='ArrowUp'){ a=(a-1+items.length)%items.length;setActive(items);e.preventDefault(); }else if(e.key==='Enter'){ if(a>=0&&items[a]){ i.value=items[a].dataset.value; hide(); e.preventDefault(); } } }); i.addEventListener('blur',()=>setTimeout(hide,200)); function onInput(){ const v=i.value.trim(); if(v===''){hide();return;} const at=v.indexOf('@'); let pre=v,dom=''; if(at!==-1){pre=v.slice(0,at);dom=v.slice(at+1).toLowerCase();} const m=d.filter(x=>x.indexOf(dom)===0).map(x=>pre+'@'+x); if(m.length>0&&pre.length>0){render(m);}else{hide();} } function render(emails){ l.innerHTML=''; l.style.display='block'; l.style.width=i.offsetWidth+'px'; a=-1;
104 emails.forEach(function(em,j){ var li=document.createElement('li'); var p=em.split('@'); li.innerHTML='<span class="email-name">'+p[0]+'</span><span class="email-domain">@'+p[1]+'</span>'; li.setAttribute('data-index',j); li.setAttribute('data-value',em); li.addEventListener('mousedown',function(){ i.value=em; hide(); }); l.appendChild(li); }); } function setActive(items){ for(var i=0;i<items.length;i++) items[i].classList.remove('active'); if(items[a]){ items[a].classList.add('active'); scrollIntoView(items[a]); } } function scrollIntoView(item){ var p=item.parentNode, pr=p.getBoundingClientRect(), ir=item.getBoundingClientRect(); if(ir.bottom>pr.bottom) p.scrollTop+=ir.bottom-pr.bottom; else if(ir.top<pr.top) p.scrollTop-=pr.top-ir.top; } function hide(){ l.style.display='none'; l.innerHTML=''; a=-1;} } document.querySelectorAll('.p_phoneCode').forEach(c=>{ const e=c.querySelector('.dialInput'), cl=c.querySelector('.p_codeList'), hd=c.querySelector('input[name="phoneDail"]'), hi=c.querySelector('input[name="phoneIso"]'), ds=c.querySelector('.control_Naner'); if(!e||!cl||!ds) return; let uc=false; const rd=()=>{ const v=ds.textContent.trim(); e.value=v; hd.value=v; hi.value=''; }; e.addEventListener('focus',()=>{ cl.classList.add('active'); uc=false; }); e.addEventListener('blur',()=>{ setTimeout(()=>{ cl.classList.remove('active'); const vi=[...cl.querySelectorAll('.p_codeItem')].filter(x=>x.style.display!=='none'); if(!uc){ if(vi.length===1) vi[0].click(); else rd(); } },200); }); e.addEventListener('input',()=>{ const v=e.value.trim().replace('+',''); cl.querySelectorAll('.p_codeItem').forEach(x=>{ const d=x.querySelector('.p_enDial')?.textContent?.trim().replace('+','')||''; x.style.display=d.startsWith(v)?'':'none'; }); }); cl.addEventListener('click',ev=>{ const t=ev.target.closest('.p_codeItem'); if(!t) return; const d=t.getAttribute('data-dial')||t.querySelector('.p_enDial')?.textContent.trim()||'', iso=t.getAttribute('data-iso')||''; e.value=d; hd.value=d; hi.value=iso; cl.querySelectorAll('.p_codeItem').forEach(x=>x.style.display=''); cl.classList.remove('active'); e.blur(); uc=true; }); }); }); 
105 
106})();
107
108  //数字滚动
109(function () { const els = document.querySelectorAll('.Nameu'); if (!els.length) return; const DEFAULT_DURATION = 2000; const easeOutCubic = x => 1 - Math.pow(1 - x, 3); const getDecimalsFromText = s => { const m = String(s).trim().match(/\.(\d+)\b/); return m ? m[1].length : 0; }; function animateCount(el) { if (el.__counting || el.__done) return; el.__counting = true; const raw = el.dataset.value ?? el.textContent.trim(); const finalValue = parseFloat(raw); const duration = parseInt(el.dataset.duration || DEFAULT_DURATION, 10); const decimals = parseInt(el.dataset.decimals ?? getDecimalsFromText(raw), 10); const startTime = performance.now(); function update(now) { const t = Math.min((now - startTime) / duration, 1); const p = easeOutCubic(t); const current = (finalValue * p).toFixed(decimals); el.textContent = current; if (t < 1) requestAnimationFrame(update); else { el.textContent = Number(finalValue).toFixed(decimals); el.__done = true; el.__counting = false; } } requestAnimationFrame(update); } const io = new IntersectionObserver((entries) => { entries.forEach(entry => { if (entry.isIntersecting) { const el = entry.target; animateCount(el); io.unobserve(el); } }); }, { threshold: 0.2 });
vendor: 6,595 bytes, lines 109-113
109 els.forEach(el => { if (el.dataset.value == null) el.dataset.value = el.textContent.trim(); const decimals = parseInt(el.dataset.decimals ?? getDecimalsFromText(el.dataset.value), 10); el.textContent = (0).toFixed(decimals); io.observe(el); }); })();
110
111
112  /*全局动画*/
113  (function(){var a,b,c,d,e,f=function(a,b){return function(){return a.apply(b,arguments)}},g=[].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1};b=function(){function a(){}return a.prototype.extend=function(a,b){var c,d;for(c in b)d=b[c],null==a[c]&&(a[c]=d);return a},a.prototype.isMobile=function(a){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(a)},a.prototype.createEvent=function(a,b,c,d){var e;return null==b&&(b=!1),null==c&&(c=!1),null==d&&(d=null),null!=document.createEvent?(e=document.createEvent("CustomEvent"),e.initCustomEvent(a,b,c,d)):null!=document.createEventObject?(e=document.createEventObject(),e.eventType=a):e.eventName=a,e},a.prototype.emitEvent=function(a,b){return null!=a.dispatchEvent?a.dispatchEvent(b):b in(null!=a)?a[b]():"on"+b in(null!=a)?a["on"+b]():void 0},a.prototype.addEvent=function(a,b,c){return null!=a.addEventListener?a.addEventListener(b,c,!1):null!=a.attachEvent?a.attachEvent("on"+b,c):a[b]=c},a.prototype.removeEvent=function(a,b,c){return null!=a.removeEventListener?a.removeEventListener(b,c,!1):null!=a.detachEvent?a.detachEvent("on"+b,c):delete a[b]},a.prototype.innerHeight=function(){return"innerHeight"in window?window.innerHeight:document.documentElement.clientHeight},a}(),c=this.WeakMap||this.MozWeakMap||(c=function(){function a(){this.keys=[],this.values=[]}return a.prototype.get=function(a){var b,c,d,e,f;for(f=this.keys,b=d=0,e=f.length;e>d;b=++d)if(c=f[b],c===a)return this.values[b]},a.prototype.set=function(a,b){var c,d,e,f,g;for(g=this.keys,c=e=0,f=g.length;f>e;c=++e)if(d=g[c],d===a)return void(this.values[c]=b);return this.keys.push(a),this.values.push(b)},a}()),a=this.MutationObserver||this.WebkitMutationObserver||this.MozMutationObserver||(a=function(){function a(){"undefined"!=typeof console&&null!==console&&console.warn("MutationObserver is not supported by your browser."),"undefined"!=typeof console&&null!==console&&console.warn("WOW.js cannot detect dom mutations, please call .sync() after loading new content.")}return a.notSupported=!0,a.prototype.observe=function(){},a}()),d=this.getComputedStyle||function(a){return this.getPropertyValue=function(b){var c;return"float"===b&&(b="styleFloat"),e.test(b)&&b.replace(e,function(a,b){return b.toUpperCase()}),(null!=(c=a.currentStyle)?c[b]:void 0)||null},this},e=/(\-([a-z]){1})/g,this.WOW=function(){function e(a){null==a&&(a={}),this.scrollCallback=f(this.scrollCallback,this),this.scrollHandler=f(this.scrollHandler,this),this.resetAnimation=f(this.resetAnimation,this),this.start=f(this.start,this),this.scrolled=!0,this.config=this.util().extend(a,this.defaults),this.animationNameCache=new c,this.wowEvent=this.util().createEvent(this.config.boxClass)}return e.prototype.defaults={boxClass:"wow",animateClass:"animated",offset:0,mobile:!0,live:!0,callback:null},e.prototype.init=function(){var a;return this.element=window.document.documentElement,"interactive"===(a=document.readyState)||"complete"===a?this.start():this.util().addEvent(document,"DOMContentLoaded",this.start),this.finished=[]},e.prototype.start=function(){var b,c,d,e;if(this.stopped=!1,this.boxes=function(){var a,c,d,e;for(d=this.element.querySelectorAll("."+this.config.boxClass),e=[],a=0,c=d.length;c>a;a++)b=d[a],e.push(b);return e}.call(this),this.all=function(){var a,c,d,e;for(d=this.boxes,e=[],a=0,c=d.length;c>a;a++)b=d[a],e.push(b);return e}.call(this),this.boxes.length)if(this.disabled())this.resetStyle();else for(e=this.boxes,c=0,d=e.length;d>c;c++)b=e[c],this.applyStyle(b,!0);return this.disabled()||(this.util().addEvent(window,"scroll",this.scrollHandler),this.util().addEvent(window,"resize",this.scrollHandler),this.interval=setInterval(this.scrollCallback,50)),this.config.live?new a(function(a){return function(b){var c,d,e,f,g;for(g=[],c=0,d=b.length;d>c;c++)f=b[c],g.push(function(){var a,b,c,d;for(c=f.addedNodes||[],d=[],a=0,b=c.length;b>a;a++)e=c[a],d.push(this.doSync(e));return d}.call(a));return g}}(this)).observe(document.body,{childList:!0,subtree:!0}):void 0},e.prototype.stop=function(){return this.stopped=!0,this.util().removeEvent(window,"scroll",this.scrollHandler),this.util().removeEvent(window,"resize",this.scrollHandler),null!=this.interval?clearInterval(this.interval):void 0},e.prototype.sync=function(){return a.notSupported?this.doSync(this.element):void 0},e.prototype.doSync=function(a){var b,c,d,e,f;if(null==a&&(a=this.element),1===a.nodeType){for(a=a.parentNode||a,e=a.querySelectorAll("."+this.config.boxClass),f=[],c=0,d=e.length;d>c;c++)b=e[c],g.call(this.all,b)<0?(this.boxes.push(b),this.all.push(b),this.stopped||this.disabled()?this.resetStyle():this.applyStyle(b,!0),f.push(this.scrolled=!0)):f.push(void 0);return f}},e.prototype.show=function(a){return this.applyStyle(a),a.className=a.className+" "+this.config.animateClass,null!=this.config.callback&&this.config.callback(a),this.util().emitEvent(a,this.wowEvent),this.util().addEvent(a,"animationend",this.resetAnimation),this.util().addEvent(a,"oanimationend",this.resetAnimation),this.util().addEvent(a,"webkitAnimationEnd",this.resetAnimation),this.util().addEvent(a,"MSAnimationEnd",this.resetAnimation),a},e.prototype.applyStyle=function(a,b){var c,d,e;return d=a.getAttribute("data-wow-duration"),c=a.getAttribute("data-wow-delay"),e=a.getAttribute("data-wow-iteration"),this.animate(function(f){return function(){return f.customStyle(a,b,d,c,e)}}(this))},e.prototype.animate=function(){return"requestAnimationFrame"in window?function(a){return window.requestAnimationFrame(a)}:function(a){return a()}}(),e.prototype.resetStyle=function(){var a,b,c,d,e;for(d=this.boxes,e=[],b=0,c=d.length;c>b;b++)a=d[b],e.push(a.style.visibility="visible");return e},e.prototype.resetAnimation=function(a){var b;return a.type.toLowerCase().indexOf("animationend")>=0?(b=a.target||a.srcElement,b.className=b.className.replace(this.config.animateClass,"").trim()):void 0},e.prototype.customStyle=function(a,b,c,d,e){return b&&this.cacheAnimationName(a),a.style.visibility=b?"hidden":"visible",c&&this.vendorSet(a.style,{animationDuration:c}),d&&this.vendorSet(a.style,{animationDelay:d}),e&&this.vendorSet(a.style,{animationIterationCount:e}),this.vendorSet(a.style,{animationName:b?"none":this.cachedAnimationName(a)}),a}
113,e.prototype.vendors=["moz","webkit"],e.prototype.vendorSet=function(a,b){var c,d,e,f;d=[];for(c in b)e=b[c],a[""+c]=e,d.push(function(){var b,d,g,h;for(g=this.vendors,h=[],b=0,d=g.length;d>b;b++)f=g[b],h.push(a[""+f+c.charAt(0).toUpperCase()+c.substr(1)]=e);return h}.call(this));return d},e.prototype.vendorCSS=function(a,b){var c,e,f,g,h,i;for(h=d(a),g=h.getPropertyCSSValue(b),f=this.vendors,c=0,e=f.length;e>c;c++)i=f[c],g=g||h.getPropertyCSSValue("-"+i+"-"+b);return g},e.prototype.animationName=function(a){var b;try{b=this.vendorCSS(a,"animation-name").cssText}catch(c){b=d(a).getPropertyValue("animation-name")}return"none"===b?"":b},e.prototype.cacheAnimationName=function(a){return this.animationNameCache.set(a,this.animationName(a))},e.prototype.cachedAnimationName=function(a){return this.animationNameCache.get(a)},e.prototype.scrollHandler=function(){return this.scrolled=!0},e.prototype.scrollCallback=function(){var a;return!this.scrolled||(this.scrolled=!1,this.boxes=function(){var b,c,d,e;for(d=this.boxes,e=[],b=0,c=d.length;c>b;b++)a=d[b],a&&(this.isVisible(a)?this.show(a):e.push(a));return e}.call(this),this.boxes.length||this.config.live)?void 0:this.stop()},e.prototype.offsetTop=function(a){for(var b;void 0===a.offsetTop;)a=a.parentNode;for(b=a.offsetTop;a=a.offsetParent;)b+=a.offsetTop;return b},e.prototype.isVisible=function(a){var b,c,d,e,f;return c=a.getAttribute("data-wow-offset")||this.config.offset,f=window.pageYOffset,e=f+Math.min(this.element.clientHeight,this.util().innerHeight())-c,d=this.offsetTop(a),b=d+a.clientHeight,e>=d&&b>=f},e.prototype.util=function(){return null!=this._util?this._util:this._util=new b},e.prototype.disabled=function(){return!this.config.mobile&&this.util().isMobile(navigator.userAgent)},e}()}).call(this);
114  var wow = new WOW({ boxClass: 'wow', animateClass: 'animated', offset: 0, mobile: true }); wow.init();
115
116
117  // 获取所有的 class 名包含 e_button, e_text, e_container, p_loopitem, e_image 的元素
118  !function () { var e = "#Scroll_Animation .Global-right", t = '[data-wow],[class*="e_button"],[class*="e_text"],[class*="e_container"],[class*="p_loopitem"],[class*="e_image"]'; if (!document.body.__wowEnhancerLive) { function n(e) { return !!(e && 1 === e.nodeType) && !(e.closest && e.closest(".
118no-animate,[data-no-wow=\"true\"]")) && !(e.closest && e.closest('[id^="c_popbox-"]')) } function o(e) { var o = e || document; o.matches && o.matches(t) && n(o) && !o.classList.contains("wow") && o.classList.add("wow", "fadeInUp"), o.querySelectorAll(t).forEach(function (e) { n(e) && !e.classList.contains("wow") && e.classList.add("wow", "fadeInUp") }) } function a() { var e = window.wow; e && "function" == typeof e.init && function () { try { e.init() } catch (e) { } }() } function r() { document.body.__wowEnhancerLive || (document.body.__wowEnhancerLive = !0, o(document), a(), new MutationObserver(function (e) { for (var t = 0; t < e.length; t++)for (var n = e[t].addedNodes || [], a = 0; a < n.length; a++){ var r = n[a]; r && 1 === r.nodeType && o(r) } }).observe(document.body, { childList: !0, subtree: !0 })) } function c() { if (document.querySelector(e)) r(); else { var t = new MutationObserver(function () { document.querySelector(e) && (t.disconnect(), r()) }); t.observe(document.body, { childList: !0, subtree: !0 }) } } "loading" === document.readyState ? document.addEventListener("DOMContentLoaded", c, { once: !0 }) : c() } }();
119  
120
121  // 基于Swiper 8.4.7和我们封装的自动初始化脚本
122  (function () { function parseBreakpoints(val, type = "slidesPerView") { if (!val) return undefined; if (val.includes("{")) { try { return JSON.parse(val); } catch (e) { console.warn(`Invalid JSON in data-${type}:`, e); return undefined; } } else { const parts = val.split(",").map(p => parseFloat(p.trim()) || 0); const result = {}; if (type === "slidesPerView") { result[0] = { slidesPerView: parts[2] ?? 1 }; result[769] = { slidesPerView: parts[1] ?? 2 }; result[1025] = { slidesPerView: parts[0] ?? 4 }; } else if (type === "spaceBetween") { result[0] = { spaceBetween: parts[2] ?? 10 }; result[769] = { spaceBetween: parts[1] ?? 10 }; result[1025] = { spaceBetween: parts[0] ?? 10 }; } return result; } } function parseResponsiveBool(attrValue, defaultValue = false) { if (attrValue == null) return defaultValue; const screenW = window.innerWidth; const val = attrValue.trim().toLowerCase(); if (val === "true") return true; if (val === "false") return false; const rules = val.split(",").map(r => r.trim()); return ((rules.includes("pc") && screenW >= 1025) || (rules.includes("ipad") && screenW >= 769 && screenW < 1025) || (rules.includes("mo") && screenW < 769)); } function mergeBreakpoints(a = {}, b = {}) { const result = { ...a }; for (const key in b) result[key] = { ...(result[key] || {}), ...b[key] }; return result; } function wireThumbAndMain(thumbSwiper, mainSwiper) { if (!thumbSwiper || !mainSwiper) return; const mainRoot = mainSwiper.el.closest('[data-swiper]'); const thumbRoot = thumbSwiper.el.closest('[data-swiper]'); const triggerMode = (thumbRoot?.getAttribute('data-thumb-trigger') || 'click').toLowerCase(); const eventName = triggerMode === 'hover' ? 'mouseenter' : 'click'; const clickSpeed = parseInt(mainRoot?.getAttribute('data-thumb-hover-speed')) || parseInt(mainRoot?.getAttribute('data-speed')) || mainSwiper.params.speed || 300; const followSpeed = parseInt(thumbRoot?.getAttribute('data-thumb-follow-speed')) || parseInt(thumbRoot?.getAttribute('data-speed')) || thumbSwiper.params.speed || 300; if (thumbSwiper.slides && thumbSwiper.slides.length) { thumbSwiper.slides.forEach((slide, index) => { slide.addEventListener(eventName, () => { mainSwiper.slideToLoop(index, clickSpeed); }); }); } function setThumbActive(i) { const total = thumbSwiper.slides.length; if (!total) return; const idx = Math.max(0, Math.min(i, total - 1)); thumbSwiper.slides.forEach(el => el.classList && el.classList.remove('is-active')); const active = thumbSwiper.slides[idx]; if (active && active.classList) active.classList.add('is-active'); } function syncNow(speed) { const i = mainSwiper.realIndex || 0; thumbSwiper.slideTo(i, typeof speed === 'number' ? speed : followSpeed); setThumbActive(i); } mainSwiper.on('slideChange', () => syncNow()); if (mainSwiper.initialized && thumbSwiper.initialized) { setTimeout(() => syncNow(0), 0); } else { mainSwiper.on('afterInit', () => setTimeout(() => syncNow(0), 0)); thumbSwiper.on('afterInit', () => setTimeout(() => syncNow(0), 0)); } } function initSwiperElement(container) { const openRule = (container.getAttribute("data-swiper-open") || "all").toLowerCase(); const screenW = window.innerWidth; const shouldInit = (() => { if (openRule === "all") return true; const rules = openRule.split(",").map(r => r.trim()); return ((rules.includes("pc") && screenW >= 1025) || (rules.includes("ipad") && screenW >= 769 && screenW < 1025) || (rules.includes("mo") && screenW < 769)); })(); if (!shouldInit || container._swiperInitialized) return; container._swiperInitialized = true; if (container.children.length === 0) { for (let i = 1; i <= 8; i++) { const div = document.createElement("div"); div.textContent = "Slide " + i; container.appendChild(div); } } container.classList.add("swiper"); const originalChildren = Array.from(container.children); const wrapper = document.createElement("div"); wrapper.className = "swiper-wrapper";
122 originalChildren.forEach(child => { child.classList && child.classList.remove("p_loopitem"); child.classList && child.classList.add("swiper-slide"); wrapper.appendChild(child); }); const inner = document.createElement("div"); inner.className = "swiper-inner"; inner.appendChild(wrapper); container.innerHTML = ""; container.appendChild(inner); const paginationType = (container.getAttribute("data-pagination") || "").toLowerCase(); const hasPagination = paginationType && paginationType !== "false"; const hasNavigation = container.getAttribute("data-navigation") === "true"; let pagEl, prevEl, nextEl; if (hasPagination) { pagEl = document.createElement("div"); pagEl.className = "swiper-pagination"; container.appendChild(pagEl); } if (hasNavigation) { prevEl = document.createElement("div"); nextEl = document.createElement("div"); prevEl.className = "swiper-button-prev"; nextEl.className = "swiper-button-next"; container.appendChild(prevEl); container.appendChild(nextEl); } const bpSlides = parseBreakpoints(container.getAttribute("data-breakpoints"), "slidesPerView"); const bpSpace = parseBreakpoints(container.getAttribute("data-space-between"), "spaceBetween"); const mergedBreakpoints = mergeBreakpoints(bpSlides, bpSpace); const thumbForSel = container.getAttribute("data-thumb-for"); const isThumbs = !!thumbForSel; const options = { loop: container.getAttribute("data-loop") !== "false", effect: container.getAttribute("data-effect") || "slide", direction: container.getAttribute("data-direction") || "horizontal", speed: parseInt(container.getAttribute("data-speed")) || 300, spaceBetween: container.getAttribute("data-space-between")?.includes(",") ? undefined : parseFloat(container.getAttribute("data-space-between")) || 10, centeredSlides: parseResponsiveBool(container.getAttribute("data-centered-slides"), false), freeMode: container.getAttribute("data-free-mode") === "true", loopedSlides: parseInt(container.getAttribute("data-looped-slides")) || undefined, touchRatio: parseFloat(container.getAttribute("data-touch-ratio")) || 1, slidesPerView: (() => { const val = container.getAttribute("data-slides-per-view"); return container.hasAttribute("data-breakpoints") ? undefined : (val === "auto" ? "auto" : parseFloat(val) || 4); })(), slidesPerGroup: parseInt(container.getAttribute("data-slides-per-group")) || 1, autoplay: (() => { const delay = parseInt(container.getAttribute("data-autoplay")); return delay ? { delay, disableOnInteraction: false } : false; })(), breakpoints: mergedBreakpoints, autoHeight: container.getAttribute("data-auto-height") === "true" }; if (pagEl) options.pagination = { el: pagEl, clickable: true, type: paginationType || "bullets" }; if (prevEl && nextEl) options.navigation = { nextEl, prevEl }; if (container.getAttribute("data-watch-slides-progress") === "true") options.watchSlidesProgress = true; if (container.getAttribute("data-watch-slides-visibility") === "true") options.watchSlidesVisibility = true; if (isThumbs) { options.loop = false; options.freeMode = true; options.watchSlidesProgress = true; options.watchSlidesVisibility = true; if (options.slidesPerView == null) options.slidesPerView = 4; } const swiperInstance = new Swiper(container.querySelector(".swiper-inner"), options); container._swiperInstance = swiperInstance; const navId = container.getAttribute("data-nav-id"); if (navId) { const navRoot = document.querySelector(`.custom_navigation[data-nav-id="${navId}"]`); if (navRoot) { const prevBtn = navRoot.querySelector(".swiper-prev"); const nextBtn = navRoot.querySelector(".swiper-next"); if (prevBtn) prevBtn.addEventListener("click", () => swiperInstance.slidePrev()); if (nextBtn) nextBtn.addEventListener("click", () => swiperInstance.slideNext()); } } container.querySelectorAll("img").forEach(img => { if (!img.complete) img.addEventListener("load", () => { swiperInstance.update(); }); }); if (isThumbs && thumbForSel) { const mainEl = document.querySelector(thumbForSel); if (mainEl) { if (mainEl._swiperInstance) wireThumbAndMain(swiperInstance, mainEl._swiperInstance); else (mainEl.__pendingThumbs ||= []).push(swiperInstance); } } else { const pending = container.__pendingThumbs; if (pending && pending.length) { pending.forEach(ts => wireThumbAndMain(ts, swiperInstance)); container.__pendingThumbs = []; } const idSel = container.id ? `#${container.id}` : null; if (idSel) document.querySelectorAll(`[data-thumb-for="${idSel}"]`).forEach(thEl => { if (thEl._swiperInstance) wireThumbAndMain(thEl._swiperInstance, swiperInstance); }); } } function initAllSwipers() { document.querySelectorAll("[data-swiper]").forEach(initSwiperElement); } window.addEventListener("DOMContentLoaded", initAllSwipers); const observer = new MutationObserver(mutations => { mutations.forEach(mutation =>
122 { mutation.addedNodes.forEach(node => { if (node.nodeType !== 1) return; if (node.matches && node.matches("[data-swiper]")) initSwiperElement(node); else if (node.querySelectorAll) node.querySelectorAll("[data-swiper]").forEach(initSwiperElement); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })();

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.