1(function () { 2 var SELECTOR = ".qrcode-fixed"; 3 var DOWNLOAD_MAP = { 4 ios: ".iphone", 5 macos: ".mac-download-btn", 6 appstore: ".app-store-btn", 7 android: ".android", 8 windows: ".window-download-btn", 9 }; 10 11 function assetUrl(name) { 12 return "/static/landing-v3/assets/" + name; 13 } 14 15 function triggerDownload(type) { 16 if (typeof window.__triggerLandingDownload === "function") { 17 window.__triggerLandingDownload(type); 18 return; 19 } 20 var selector = DOWNLOAD_MAP[type]; 21 if (!selector) return; 22 var footerBtn = document.querySelector("footer " + selector); 23 if (footerBtn) footerBtn.click(); 24 } 25 26 function buildFrame12(root, canvas) { 27 root.classList.add("frame12"); 28 root.dataset.frame12 = "1"; 29 root.innerHTML = 30 '<div class="frame12-stack">' + 31 ' <div class="frame12-inner">' + 32 ' <div class="frame12-qr">' + 33 ' <div class="frame12-qr-box"><div id="code"></div></div>' + 34 ' <img class="frame12-scan-tab" src="' + 35 assetUrl("saomiao.png") + 36 '" alt="æ«æäºç»´ç ä¸è½½">' + 37 " </div>" + 38 ' <div class="frame12-actions">' + 39 buildItem("ios", "icon1.png", "è¹æææºä¸è½½", "ios", "iOSä¸è½½") + 40 buildItem("macos", "icon2.png", "MACä¸è½½", "macos", "Macä¸è½½") + 41 buildItem("appstore", "icon3.png", "APPååºä¸è½½", "appstore", "AppStoreä¸è½½") + 42 buildItem("android", "icon4.png", "å®åææºä¸è½½", "android", "Androidä¸è½½") + 43 buildItem("windows", "icon5.png", "Windowsä¸è½½", "windows", "Windowsä¸è½½") + 44 " </div>" + 45 " </div>" + 46 ' <div class="frame12-tips">å®è£ æç¤º:ç±äºè¡ä¸åå ï¼æ¬APPä¼è¢«æäºææ¯è½¯ä»¶è®¤å®ä¸ºç æ¯ï¼è¯·å¤§å®¶æ¾å¿ä¸è½½ä½¿ç¨æ¬APPæå¹¿ååä¼åæ¶çï¼å®è£ æ¬APPä¸ä¼å¯¹æ¨çææºé æä»»ä½æå®³ã</div>' + 47 "</div>"; 48 49 var code = root.querySelector("#code"); 50 if (canvas && code) code.appendChild(canvas); 51 52 root.querySelectorAll("[data-download-type]").forEach(function (btn) { 53 btn.addEventListener("click", function () { 54 triggerDownload(btn.getAttribute("data-download-type")); 55 }); 56 }); 57 } 58 59 function buildItem(type, icon, label, tabKey, tabName) { 60 return ( 61 '<button type="button" class="frame12-item tjtagmanager" data-download-type="' + 62 type + 63 '" data-event="landing_page_click" data-landing_page_id="TJ-004" data-tab_key="' + 64 tabKey + 65 '" data-tab_name="' + 66 tabName + 67 '">' + 68 '<img class="frame12-icon-box" src="' + 69 assetUrl(icon) + 70 '" alt="' + 71 label + 72 '">' + 73 "<p>" + 74 label + 75 "</p>" + 76 "</button>" 77 ); 78 } 79 80 function upgrade() { 81 var root = document.querySelector(SELECTOR); 82 if (!root || root.dataset.frame12 === "1") return false; 83 var canvas = root.querySelector("canvas"); 84 buildFrame12(root, canvas); 85 return true; 86 } 87 88 function waitForQrcodeFixed() { 89 if (upgrade()) return; 90 var observer = new MutationObserver(function () { 91 if (upgrade()) observer.disconnect(); 92 }); 93 observer.observe(document.body, { childList: true, subtree: true }); 94 setTimeout(function () { 95 upgrade(); 96 observer.disconnect(); 97 }, 5000); 98 } 99 100 if (document.readyState === "loading") { 101 document.addEventListener("DOMContentLoaded", waitForQrcodeFixed); 102 } else { 103 waitForQrcodeFixed(); 104 } 105})();
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.