1<!DOCTYPE html><html class="no-js" lang="zh-TW" prefix="og: https://ogp.me/ns# fb: https://ogp.me/ns/fb# website: https://ogp.me/ns/website#"> <head> <base href="https://www.tworoad.tw/" /> <meta charset="utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" /> <meta http-equiv='x-dns-prefetch-control' content='on'> <meta name="robots" content="noindex,follow"> <meta name="author" content="äºè·¯è¿èç³ l ç¨å¿ï¼æéä»¶äºåå°æ¥µè´"> <meta name="copyright" content="æå¡ç»å
¥"> <meta name="google" content="notranslate" /> <meta name="mobile-web-app-capable" content="yes"> <meta name="theme-color" content="#f5f5f5"> <link rel="preconnect" href="//cdn.qdm.cloud" /> <link rel="preconnect" href="//image-cdn-flare.qdm.cloud" /> <link rel="preconnect" href="//image-cdn.qdm.cloud" /> <link rel="preconnect" href="//www.facebook.com" /> <link rel="preconnect" href="//connect.facebook.net" /> <link rel="preconnect" href="//ajax.googleapis.com" /> <link rel="dns-prefetch" href="//ajax.googleapis.com" /> <link rel="dns-prefetch" href="//image-cdn-flare.qdm.cloud" /> <link rel="dns-prefetch" href="//image-cdn.qdm.cloud" /> <link rel="dns-prefetch" href="//cdn.qdm.cloud" /> <link rel="dns-prefetch" href="//fonts.googleapis.com" /> <link rel="dns-prefetch" href="//www.google-analytics.com" /> <link rel="dns-prefetch" href="//www.googletagmanager.com" /> <link rel='dns-prefetch' href="//www.google.com" /> <link rel='dns-prefetch' href="//www.google.com.tw" /> <link rel='dns-prefetch' href="//maxcdn.bootstrapcdn.com" /> <link rel='dns-prefetch' href="//cdnjs.cloudflare.com" /> <link rel='dns-prefetch' href="//www.facebook.com" /> <link rel='dns-prefetch' href="//connect.facebook.net" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title itemprop='name'>æå¡ç»å
¥ | äºè·¯è¿èç³ l ç¨å¿ï¼æéä»¶äºåå°æ¥µè´</title> <meta name="description" content="è·äººè¿èç³å°è³£åºï¼ç§æå¤©ç¶å¥åº·ãè·äººç²¾ç¥åç¾é£æº«åº¦ï¼éµå¾ªä¸å°æå¤æ³ï¼å®è·ä¸ä»£å³æ¿çç¾å³ï¼ä½ çµä¸è½é¯éçç¾é£ã" /> <meta property="og:description" content="è·äººè¿èç³å°è³£åºï¼ç§æå¤©ç¶å¥åº·ãè·äººç²¾ç¥åç¾é£æº«åº¦ï¼éµå¾ªä¸å°æå¤æ³ï¼å®è·ä¸ä»£å³æ¿çç¾å³ï¼ä½ çµä¸è½é¯éçç¾é£ã" /> <!-- FACESPACE --> <meta property="fb:admins" content="563373182ï¼768266873" /> <meta property="fb:app_id" content="111452980985663" /> <meta property="og:title" content="æå¡ç»å
¥ | äºè·¯è¿èç³ l ç¨å¿ï¼æéä»¶äºåå°æ¥µè´"/> <meta property="og:type" content="website"/> <meta property="og:url" content="https://www.tworoad.tw/login"/> <meta property="og:locale" content="zh_TW" /> <meta property="og:image" content="https://image-cdn-flare.qdm.cloud/q67b3ef089f8e6/image/data/New_version/é ç_logo.jpg"/> <meta property="og:image:url" content="https://image-cdn-flare.qdm.cloud/q67b3ef089f8e6/image/data/New_version/é ç_logo.jpg"/> <meta property="og:site_name" content="äºè·¯è¿èç³ l ç¨å¿ï¼æéä»¶äºåå°æ¥µè´"> <meta property="og:updated_time" content="1791501422"> <!-- Twitter Card --> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:title" content="æå¡ç»å
¥ | äºè·¯è¿èç³ l ç¨å¿ï¼æéä»¶äºåå°æ¥µè´"> <meta name="twitter:description" content="è·äººè¿èç³å°è³£åºï¼ç§æå¤©ç¶å¥åº·ãè·äººç²¾ç¥åç¾é£æº«åº¦ï¼éµå¾ªä¸å°æå¤æ³ï¼å®è·ä¸ä»£å³æ¿çç¾å³ï¼ä½ çµä¸è½é¯éçç¾é£ã"> <meta name="twitter:image" content="https://image-cdn-flare.qdm.cloud/q67b3ef089f8e6/image/data/New_version/é ç_logo.jpg"> <!-- llms.txt --> <link rel="llms-txt" href="/llms.txt" /> <!-- G++ --> <meta itemprop="name" content="æå¡ç»å
¥"> <meta itemprop="description" content="è·äººè¿èç³å°è³£åºï¼ç§æå¤©ç¶å¥åº·ãè·äººç²¾ç¥åç¾é£æº«åº¦ï¼éµå¾ªä¸å°æå¤æ³ï¼å®è·ä¸ä»£å³æ¿çç¾å³ï¼ä½ çµä¸è½é¯éçç¾é£ã"> <meta itemprop="image" content="//image-cdn-flare.qdm.cloud/q67b3ef089f8e6/image/data/New_version/é ç_logo.jpg"> <meta name="google-site-verification" content="nTLQNQEOAUL_80bZjcd3H09Z-Arl-u7X7GL3Rc-f7dI" /> <link title='æå¡ç»å
¥ - è¨é±ååå¿«è¨RSS' href="https://www.tworoad.tw/googlebase.xml" type='application/rss+xml' rel='alternate' > <!-- Google's Sitelinks Search -->
1<script type="application/ld+json"> 2 { 3 "@context": "https://schema.org", 4 "@type": "WebSite", 5 "name" : "äºè·¯è¿èç³ l ç¨å¿ï¼æéä»¶äºåå°æ¥µè´", 6 "url": "https://www.tworoad.tw/", 7 "potentialAction": { 8 "@type": "SearchAction", 9 "target": { 10 "@type": "EntryPoint", 11 "urlTemplate": "https://www.tworoad.tw/search?q={filter_name}" 12 }, 13 "query-input": "required name=filter_name" 14 } 15 } 16 </script>
16 <!-- Organization / LocalBusiness Schema -->
16<script type="application/ld+json"> 17 { 18 "@context": "https:\/\/schema.org", 19 "@type": "Organization", 20 "name": "äºè·¯è¿èç³ l ç¨å¿ï¼æéä»¶äºåå°æ¥µè´", 21 "url": "https:\/\/www.tworoad.tw\/", 22 "logo": "https:\/\/image-cdn-flare.qdm.cloud\/q67b3ef089f8e6\/image\/data\/New_version\/é ç_logo.jpg", 23 "email": "[email protected]", 24 "sameAs": [ 25 "https:\/\/www.facebook.com\/tworoad2021", 26 "https:\/\/line.me\/R\/ti\/p\/@217yujvr" 27 ], 28 "image": "https:\/\/image-cdn-flare.qdm.cloud\/q67b3ef089f8e6\/image\/data\/New_version\/é ç_logo.jpg" 29} </script>
29
29<script type="text/javascript"> 30(function(c,l,a,r,i,t,y){ 31c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)}; 32t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i; 33y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y); 34})(window, document, "clarity", "script", "99n8zhelys"); 35</script>
35 <!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 68 bytes, lines 35-36
35 <script async 36 src="https://www.googletagmanager.com/gtag/js?id=
36G-8CRMWS8GBK
vendor: 12 bytes, line 36
36"></script>
36<script> 37
vendor: 141 bytes, lines 37-41
37window.dataLayer = window.dataLayer || []; 38 function gtag(){dataLayer.push(arguments);} 39 gtag('js', new Date()); 40 41 gtag('config', "
41G-8CRMWS8GBK
vendor: 42 bytes, lines 41-43
41", { send_page_view: false }); 42 43
43gtag('config', "323701551", { send_page_view: false }); 44 </script>
44
44<script> 45 46 var enhanced_conversion_data = {}; 47 var ga_userId = null; 48 var ga_userId_global = null; 49 var qdm_user_uuid = "q67b3ef089f8e6-cg85va5449nrs14aukmqfuqqti"; 50 var helperga4 = null; 51 var xmlhttp_uinfo = new XMLHttpRequest(); 52 xmlhttp_uinfo.open('GET', "https://www.tworoad.tw/index.php?route=common/header/getLoggedInUserInfo&token=" + new Date().getTime() + "1" + (Math.floor(Math.random() * 999) + 100) , true); 53 xmlhttp_uinfo.onreadystatechange = function() { 54 if (xmlhttp_uinfo.readyState == 4) { 55 if(xmlhttp_uinfo.status == 200) { 56 try { 57 var obj = JSON.parse(xmlhttp_uinfo.responseText); 58 ga_userId = obj.user_id; 59 if( obj.email ) { 60 enhanced_conversion_data.email = obj.email; 61 } 62 } catch (e) { } 63 } 64 } 65 }; 66 xmlhttp_uinfo.send(null); 67 68 try { 69 if ('localStorage' in window && window['localStorage'] !== null){ 70 if( localStorage.getItem('qdm_user_uuid') && qdm_user_uuid == null ) { 71 qdm_user_uuid = localStorage.getItem('qdm_user_uuid'); 72 } 73 } 74 } catch (e) {} 75 window.addEventListener("beforeunload", () => localStorage.removeItem('qdm_user_uuid')); 76 77 function QUUID(){var x=(new Date).getTime(),t="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(t){const n=(x+16*Math.random())%16|0;return x=Math.floor(x/16),("x"==t?n:3&n|8).toString(16)});return "q67b3ef089f8e6"+t;} 78 var dateTime = Date.now(); 79 var timestamp = Math.floor(dateTime / 1000); 80 var global_quuid = QUUID(); 81 //var global_quuid = "q67b3ef089f8e6" + Math.random().toString(13).substr(2, 9) + "" + timestamp + "" + new Date().getTime(); 82 var global_product_id = 0; 83 var ecommCheckoutTotal = 0; 84 var gecommProduct = new Array("0"); 85 var gecommProductName = ''; 86 var gecommProductSKU = ''; 87 var gecommProductDesc = ''; 88 var gecommProductBrand = ''; 89 var gecommProductBrand_cyntelli = ''; 90 var gecommProductCategoryPath = ''; 91 var gecommProductCategoryWithComma = ''; 92 var gecommProductPrice = 0; 93 var gecommCompareAtPrice = 0; 94 var gecommProductImageUrl = ""; 95 var gecommProductUrl = ""; 96 var gecommViewCategoryName = ''; 97 var gecommViewFullCategoryName = ''; 98 var gecommProductToCart = {}; 99 var ecommOrderToCheckout = {}; 100 dataLayer.push({ 101 'pageCategory': 'signup', 102 'visitorType': 'high-value' 103 }); 104 105 var customer_id = '0'; 106 if(customer_id>0){ 107 if( ga_userId !== null ) { 108 ga_userId = customer_id; 109 } 110 } 111 112 var ga_utm_source = null; 113 var toggleVisible = function(id){ 114 var el = document.getElementById(id); 115 if( el !== null ) { el.style.visibility = "visible"; } 116 }; 117 118 </script>
118
118<script id="google-ga-event-track" type="text/javascript"> 119 120 var track_google_ga_trigger = 0; 121 122 setTimeout(function(){ 123 124 if( ga_userId !== null ) { 125 ga_userId_global = "q67b3ef089f8e6_" + ga_userId; 126 127 dataLayer.push({ 128 'event': 'data', 129 'UID': ga_userId 130 }); 131 window.adGeek_d = { 132 'memberId': ga_userId 133 }; 134 135 gtag('config', '323701551', {'user_id': ga_userId_global}); /*ga4*/ 136 137 gtag('config', "G-8CRMWS8GBK", {'user_id': ga_userId_global}); 138 139 140 } else { 141 } 142 143 if( track_google_ga_trigger == 1 ) { return false; }; 144 145 if ( parseInt(global_product_id) > 0 ) { 146 if (typeof gaTrackProductView == 'function') { 147 gaTrackProductView(); 148 } 149 } 150 151 152 153 154 155 156 try { 157 gtag('event', 'page_view', { 158 page_title: 'æå¡ç»å ¥', 159 page_location: location.href, 160 page_path: location.pathname, 161 }); 162 163 164 } catch (e) { } 165 166 }, 2000); 167 168 </script>
168
168<script> 169 170 var QDMPPID = "d93bec3d7e7e56f07848132c4c0fe2c3"; 171 function setCookie(name, value, days) { 172 var expires = ""; 173 if (days) { 174 // Mutate ONE Date object then format it. The previous one-liner set the 175 // expiry on a throwaway Date and formatted a fresh (now) Date, so every 176 // "persistent" cookie got expires=now and was dropped immediately. 177 var expireDate = new Date(); 178 expireDate.setTime(expireDate.getTime() + (864e5 * days)); 179 expires = "; expires=" + expireDate.toUTCString(); 180 } 181 // SameSite=Lax lets cookies survive redirects back from external services (e.g. ECPay logistics). 182 document.cookie = name + "=" + value + expires + "; path=/; Secure; SameSite=Lax"; 183 } 184 function getCookie(e){var n,i=document.cookie,o=i.indexOf(" "+e+"=");return-1==o&&(o=i.indexOf(e+"=")),i=-1==o?null:(o=i.indexOf("=",o)+1,-1==(n=i.indexOf(";",o))&&(n=i.length),unescape(i.substring(o,n)))} 185 if( !getCookie("QDMPPID") ) { setCookie("QDMPPID","18ea38f1f23376e6632b442cd0b96acc", 365); } 186 QDMPPID = getCookie("QDMPPID"); 187 <!-- Facebook Pixel Code --> 188 !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? 189 n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; 190 n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; 191 t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, 192 document,'script','https://connect.facebook.net/en_US/fbevents.js'); 193 <!-- End Facebook Pixel Code --> 194 195 function onloadCSS(e,n){function t(){!o&&n&&(o=!0,n.call(e))}var o;e.addEventListener&&e.addEventListener("load",t),e.attachEvent&&e.attachEvent("onload",t),"isApplicationInstalled"in navigator&&"onloadcssdefined"in e&&e.onloadcssdefined(t)}!function(e){"use strict";var n=function(n,t,o){function a(e){return l.body?e():void setTimeout(function(){a(e)})}function d(){r.addEventListener&&r.removeEventListener("load",d),r.media=o||"all"}var i,l=e.document,r=l.createElement("link");if(t)i=t;else{var s=(l.body||l.getElementsByTagName("head")[0]).childNodes;i=s[s.length-1]}var f=l.styleSheets;r.rel="stylesheet",r.href=n,r.media="only x",a(function(){i.parentNode.insertBefore(r,t?i:i.nextSibling)});var c=function(e){for(var n=r.href,t=f.length;t--;)if(f[t].href===n)return e();setTimeout(function(){c(e)})};return r.addEventListener&&r.addEventListener("load",d),r.onloadcssdefined=c,c(d),r};"undefined"!=typeof exports?exports.loadCSS=n:e.loadCSS=n}("undefined"!=typeof global?global:this); 196 197 function removeClass( classname, element ) { 198 var cn = element.className; 199 var rxp = new RegExp( "s?b"+classname+"b", "g" ); 200 cn = cn.replace( rxp, '' ); 201 element.className = cn; 202 } 203 204 var disabledScroll = 1; 205 var doJsAfterLoad = 0; 206 207 208 var stylesheets = [ 209 "https://cdn.qdm.cloud/static/fontawesome/v3.2.1/css/font-awesome.min.css", 210 "https://cdn.qdm.cloud/static/fontawesome/v4.7.0/css/font-awesome.min.css", 211 "https://cdn.qdm.cloud/static/fontawesome/v5.11.2/css/all.min.css", 212 "https://cdn.qdm.cloud/static/fontawesome/v5.11.2/css/v4-shims.min.css", 213 "https://cdn.qdm.cloud/static/fontawesome/v6.5.1/css/all.min.css", 214 "https://fonts.googleapis.com/css?family=Roboto:400,400i,500,700&display=swap", 215 "https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css", 216 "https://cdnjs.cloudflare.com/ajax/libs/izitoast/1.4.0/css/iziToast.min.css" 217 ]; 218 function refreshMiniCartScrollBar(){ 219 var nice = $(".nicescroll-box").niceScroll(".wrap",{emulatetouch:true,bouncescroll:true}); 220 } 221 function initCoreCSS(){ 222 if( doJsAfterLoad ) return; 223 var loading_css_product = loadCSS("https://cdn.qdm.cloud/assets/css/core_product.24022002.css"); 224 onloadCSS(loading_css_product, function(){ initCSS(); }); 225 toggleVisible('header'); 226 toggleVisible('mainnav'); 227 doJsAfterLoad = 1; 228 } 229 function initCSS(){ 230 for (var i=0; i < stylesheets.length; i++) { loadCSS(stylesheets[i]); } 231 } 232 function loadJS(){ 233 } 234 235 const ImageErrorHandler = { 236 // é ç½®é¸é 237 config: { 238 maxRetries: 5, 239 baseDelay: 200, 240 maxDelay: 3000, 241 defaultImage: "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7", 242 fallbackImage: "//cdn.qdm.cloud/assets/no_image.jpg" // å¯é¸çæ¿ä»£åç 243 }, 244 245 // æ£å¨èççåç Mapï¼é²æ¢éè¤èçï¼ 246 processingImages: new WeakMap(), //WeakMapæ¸å°è¨æ¶é«çæ´©æ¼ 247 handle(image) { 248 try { 249 if (!image || !image.src || this.processingImages.has(image)) { 250 return; 251 } 252 253 // æ¨è¨çºèçä¸ 254 this.processingImages.set(image, true); 255 256 const retryCount = parseInt(image.getAttribute('data-reload') || '0') + 1; 257 258 if (retryCount > this.config.maxRetries) { 259 this.handleFinalError(image); 260 return; 261 } 262 263 image.setAttribute('data-reload', retryCount); 264 265 // è¨ç®å»¶é²æéï¼ææ¸éé¿ï¼
266 const delay = Math.min( 267 this.config.baseDelay * Math.pow(2, retryCount - 1), 268 this.config.maxDelay 269 ); 270 271 setTimeout(() => { 272 this.retryLoad(image, retryCount); 273 }, delay); 274 275 } catch (err) { 276 console.error('ImageErrorHandler error:', err); 277 this.handleFinalError(image); 278 } 279 }, 280 281 retryLoad(image, retryCount) { 282 const imageSrc = this.updateTimestamp(image.src); 283 // ä½¿ç¨æ°åçç©ä»¶æ¸¬è©¦ 284 const testImage = new Image(); 285 testImage.onload = () => { 286 // æåè¼å ¥ 287 image.src = imageSrc; 288 this.processingImages.delete(image); 289 290 // éæ°ç¶å®é¯èª¤èç 291 image.onerror = () => this.handle(image); 292 }; 293 294 testImage.onerror = () => { 295 // è¼å ¥å¤±æ 296 this.processingImages.delete(image); 297 298 // å¦ææ¯æå¾ä¸æ¬¡é試åï¼å試使ç¨åç¨åç 299 if (retryCount === this.config.maxRetries - 1 && this.config.fallbackImage) { 300 image.src = this.config.fallbackImage; 301 image.onerror = () => this.handle(image); 302 } else { 303 this.handle(image); 304 } 305 }; 306 307 testImage.src = imageSrc; 308 }, 309 310 updateTimestamp(src) { 311 const timestamp = `timestamp=${Date.now()}`; 312 313 if (src.includes('timestamp=')) { 314 return src.replace(/timestamp=\d+/, timestamp); 315 } 316 317 const separator = src.includes('?') ? '&' : '?'; 318 return `${src}${separator}${timestamp}`; 319 }, 320 321 handleFinalError(image) { 322 // æ¸ ç 323 image.onerror = null; 324 image.onload = null; 325 this.processingImages.delete(image); 326 327 // ä¿ååå§ URL 328 if (!image.src.includes("base64") && !image.hasAttribute('data-image-raw')) { 329 image.setAttribute('data-image-raw', image.src); 330 } 331 332 // è¨ç½®é è¨åç 333 image.src = this.config.defaultImage; 334 335 // 觸ç¼äºä»¶ 336 image.dispatchEvent(new CustomEvent('imageFinalError', { 337 detail: { 338 originalSrc: image.getAttribute('data-image-raw'), 339 retries: image.getAttribute('data-reload') 340 } 341 })); 342 } 343 }; 344 345 // åçé¯èª¤ 346 function imgError(image) { 347 ImageErrorHandler.handle(image); 348 } 349 350 351 </script>
351 <!-- Facebook Pixel Code -->
351<script id="facebook-pixcel-reportFbqTrack" type="text/javascript"> 352 function reportFbqTrack() { 353 fbq('dataProcessingOptions', []); 354 var pixel_ids = ['748438983148999']; 355 var fb_advanced_matching = {}; 356 for (var i = 0; i < pixel_ids.length; i++){ 357 try { 358 var init_params = Object.assign({}, fb_advanced_matching); 359 if( ga_userId !== null ) { 360 ga_userId_global = "q67b3ef089f8e6_" + ga_userId; 361 init_params.uid = ga_userId_global; 362 } 363 init_params.external_id = QDMPPID; 364 fbq('init', pixel_ids[i], init_params, {'agent':'plQDM'}); 365 } catch (e) { 366 // fallback: è³å°å å« external_id 367 var fallback_params = {external_id: QDMPPID}; 368 fbq('init', pixel_ids[i], fallback_params, {'agent':'plQDM'}); 369 } 370 } 371 setTimeout(function() { fbq('track', "PageView", {}, {eventID: global_quuid + "v"}); }, 30); 372 373 374 375 } 376 </script>
376 <!-- End Facebook Pixel Code -->
376<script> 377 function vbtrax_track(){ 378 } 379 380 function criteo_track(){ 381 } 382 383 384 </script>
384 <!-- Google Tag Manager -->
384<script> 385 setTimeout(function(){
vendor: 333 bytes, lines 385-390
385 386 (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 387 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 388 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 389 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 390 })(window,document,'script','dataLayer','
390GTM-KXZFJ3C
vendor: 5 bytes, lines 390-391
390'); 391
391}, 1500); 392 </script>
392 <!-- End Google Tag Manager -->
392<script type="application/javascript"> <!-- LINE Tag Base Code --> 393(function(g,d,o){ 394  g._ltq=g._ltq||[];g._lt=g._lt||function(){g._ltq.push(arguments)}; 395  var h=location.protocol==='https:'?'https://d.line-scdn.net':'http://d.line-cdn.net'; 396  var s=d.createElement('script');s.async=1; 397  s.src=o||h+'/n/line_tag/public/release/v1/lt.js'; 398  var t=d.getElementsByTagName('script')[0];t.parentNode.insertBefore(s,t); 399    })(window, document); 400_lt('init', { 401  customerType: 'lap', 402  tagId: 'ca1644dc-2795-476b-9ffa-e1550d80f920'' 403}); 404_lt('send', 'pv', ['ca1644dc-2795-476b-9ffa-e1550d80f920'']); 405<!-- End LINE Tag Base Code --> 406 407try { setCookie("qdmfbevent_id", global_quuid + "v", 5); } catch (error) { } 408 409(function() { 410 var url = "https://www.tworoad.tw/index.php?route=pixcel/facebook/capi_page_view&quuid=" + global_quuid + "v"; 411 412 if (typeof fetch === "function") { 413 try { 414 fetch(url, { method: "GET", keepalive: true, credentials: "include" }).catch(function() {}); 415 } catch (e) {} 416 } else { 417 try { 418 var xhr = new XMLHttpRequest(); 419 xhr.open("GET", url, true); 420 xhr.send(); 421 } catch (e) {} 422 } 423})(); 424 </script>
424 </script>
424
424<script> 425 var N=document.createElement("link"); 426 N.setAttribute("href", "https://image-cdn-flare.qdm.cloud/q67b3ef089f8e6/image/data/2023/03/28/d582cbfbb5e6775893b8fbf654d4fc86.jpg"); 427 N.setAttribute("rel", "shortcut icon"); 428 N.setAttribute("type", "image/jpeg"); 429 document.head.appendChild(N); 430 </script>
430
430<script>document.createElement("picture");</script>
430
430<script async src='https://cdnjs.cloudflare.com/ajax/libs/picturefill/3.0.3/picturefill.min.js'></script>
430 <link rel="icon" href="https://image-cdn-flare.qdm.cloud/q67b3ef089f8e6/image/data/2023/03/28/d582cbfbb5e6775893b8fbf654d4fc86.jpg" type="image/png" sizes="48x48" > <link rel="shortcut icon" href="https://image-cdn-flare.qdm.cloud/q67b3ef089f8e6/image/data/2023/03/28/d582cbfbb5e6775893b8fbf654d4fc86.jpg" type="image/png" sizes="48x48" > <link type="text/css" rel="stylesheet" href="https://cdn.qdm.cloud/min/css/core.260320v01.css"> <style> 431 *, body, p, pre, button, input, optgroup, select, textarea, a, a:visited { font-family: 'SF Pro TC', 'SF Pro Text', 'PingFang TC', 'Segoe UI', SegoeUI, 'Microsoft JhengHei', å¾®è»æ£é»é«, 'Helvetica Neue', Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } 432 @media (min-width: 1200px) { body { padding-top: 40px; } .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { width: 1170px; } } 433 .hidden{display:none;visibility:hidden} 434 .pull-right { float: right !important; } 435 .container > #mainnav.skin4 { max-width:860px;width:100%; } 436 .container > #mainnav.skin4 .nav.menu-nav { display:inherit; } 437 #mainnav ul { list-style: none; display: flex; flex-wrap: wrap; } 438 #mainnav ul li { position: relative; } 439 #mainnav ul li ul.dropdown-menu { position: absolute; display: none; flex-direction: column; } 440 #mainnav ul li ul.dropdown-menu > li.column-menu { display: table-cell; border-right: 1px solid #eee; vertical-align: top; } 441 #mainnav ul li ul.dropdown-menu > li.column-menu > ul { display: block; } 442 #mainnav ul li:hover > ul { display: flex; } 443 #mainnav ul ul ul {top: 0; left: 100%; border-left:solid 1px #fff; width:auto;} 444 #mainnav ul.nav li.dropdown ul.dropdown-menu { webkit-box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); -moz-box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); } 445 #mainnav ul.nav li.dropdown ul.dropdown-menu li a { font-size: 17px; line-height: 26px; } 446 #mainnav ul.nav li.dropdown > ul.dropdown-menu > li[data-has-child] > a:after { content: ''; border: 4px solid transparent; border-left: 4px solid #000; margin-top: 2px; margin-bottom: 3px; display: inline-block; vertical-align: bottom; position: absolute; right: 6px; top: 10px; } 447 .navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0;} 448 .navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px;} 449 #header ul{list-style:none;margin:0;padding:0} #header li{list-style:none} 450 .navbar .nav{position:relative;} 451 .navbar .nav.pull-right{float:right;margin-right:0;} 452 .navbar .nav>li{float:left;} 453 .navbar .nav>li>a{float:none;padding:10px 15px 10px;text-decoration:none;} 454 .navbar .nav .dropdown-toggle .caret{margin-top:8px;} 455 .navbar .button-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin-right:5px;} 456 .button-navbar .icon-bar+.icon-bar{margin-top:3px;} 457 .navbar .nav>li>.dropdown-menu:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0, 0, 0, 0.2);position:absolute;top:-7px;left:9px;} 458 .navbar .nav>li>.dropdown-menu:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #ffffff;position:absolute;top:-6px;left:10px;} 459 .dropdown-menu { position: absolute; display: none; float: left; } 460 .dropup, .dropdown { position: relative; } 461 .pushy { z-index: 99999999; } 462 .pushy-menu-storename span{ 463 width: 40%; 464 position: absolute; 465 top: 24px; 466 right: 5px; 467 text-align: right; 468 padding-right: 10px; 469 } 470 .pushy-menu-storename a{ 471 width: 90%; 472 } 473 .pushy-menu-storename a:hover, a:visited, a:link, a:active { 474 text-decoration: none; 475 } 476 </style> <link type="text/css" rel="stylesheet" href="https://cdn.qdm.cloud/min/css/theme/skin-3.css?v=231130001"> <link type="text/css" rel="stylesheet" href="https://image-cdn.qdm.cloud/site/q67b3ef089f8e6/custom_theme.css?v=20230807100759"> <style> 477 html {-webkit-transition: background-color 0s;transition: background-color 0s;} html.loading { position: relative; overflow:hidden; width:100%; height:100%; min-height:768px;
477 background: #fff url('https://cdn.qdm.cloud/min/cache/loading_1107.gif') no-repeat 50% 40%;-webkit-transition: background-color 0; transition: background-color 0; height: 100%; width: 100%;} body {-webkit-transition: opacity 0.3s ease-in;transition: opacity 0.3s ease-in;} html.loading body { opacity: 0; -webkit-transition: opacity 0s; transition: opacity 0s; } html.loading:before { font-size: 15px; content: "ã è«å¿ééè¦çª ãçåäº¤æææ¬ä¸"; color: #000; vertical-align: middle; text-align: center; width: 100%; display: block; position: absolute; top: 30%; } img { opacity: 1; transition: opacity 0s; } img[data-src] { opacity: 1; } .flexslider .flex-direction-nav { display:none; } 478 #myBody.product-product .heading h1, #myBody.product-product .mainborder .rightcol h1 { color: rgb(0, 0, 0); 479 } 480 .already_sold span{color:#e4007f;font-weight:bold;} 481 #myBody .fancybox-buttons { top: 60px; } 482 .ui-autocomplete.ui-front.ui-menu { 483 z-index: 999999999; border: none; border: 1px solid #EEE; box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); 484 } 485 .ui-autocomplete.ui-front.ui-menu > .ui-menu-item { 486 font-size: 17px; line-height: 26px; list-style-image: none; background-color: #FFF; cursor: pointer; border: none; 487 } 488 .ui-autocomplete.ui-front.ui-menu > .ui-menu-item a.ui-state-focus { 489 line-height: 26px; 490 border-color: #616161; 491 background: #616161 !important; 492 font-weight: bold !important; 493 color: #ffffff !important; 494 } 495 @media only screen and (max-width:768px){.fb_dialog_content>iframe:first-child, .fb-customerchat iframe {bottom: 50px !important;}.quickcheckout-checkout .fb_dialog_content>iframe:first-child, .quickcheckout-checkout .fb-customerchat iframe {bottom: 90px !important;}} 496 .onsale{ width:65px; height:24px; min-width:65px; min-height:24px; padding:2px; border-radius:5%; line-height:20px; } 497 #navbar-top-socialbar li.social-icon{ line-height:0px; padding-top:6px; } 498 #navbar-top-socialbar li.social-icon>a>i{ line-height:24px; } 499 .display_price { display:none; } 500 501 #payment-logo-list{ 502 width: 100%; 503 max-width: 1200px; 504 margin: 0 auto; 505 /*padding-bottom: 20px;*/ 506 padding-top: 10px; 507 } 508 509 #payment-logo-list .pl-row { 510 display: flex; 511 flex-wrap: wrap; 512 justify-content: center; 513 gap: 20px; 514 } 515 516 #payment-logo-list .pl-col { 517 flex: 1; 518 max-width: 120px; 519 padding: 2px; 520 text-align: center; 521 } 522 #payment-logo-list .pl-col img { 523 max-height: 40px; 524 line-height: 40px; 525 object-fit: contain 526 } 527 @media only screen and (max-width:768px){ 528 #payment-logo-list .pl-col { 529 min-width: 10%; 530 } 531 } 532 </style> <style> 533 .preload-hidden { opacity: 0; transition: opacity .3s ease; } 534 .awoo-ui { display:block; margin-top:20px; margin-bottom:20px; } 535 </style>
535<script> 536 window.addEventListener('load', function(){ 537 try { 538 setTimeout(function(){ 539 var preloadElements = document.querySelectorAll('.preload-hidden'); 540 preloadElements.forEach(function(element) { 541 element.style.opacity = '1'; 542 }); 543 }, 300); 544 } catch(e) {} 545 }); 546 </script>
546 </head> <body id="myBody" data-customer-group="1" data-instant-allow-query-string itemscope itemtype="https://schema.org/WebSite" class="responsive skin-3 account-login"> <div id="fb-root"></div>
546<script> 547 window.fbAsyncInit = function() { 548 FB.init({ 549 appId : '111452980985663', 550 autoLogAppEvents : true, 551 cookie : true, 552 xfbml : true, 553 status : true, 554 version : 'v19.0' 555 }); 556 }; 557</script>
557 <!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, line 557
557 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
557GTM-KXZFJ3C
vendor: 83 bytes, lines 557-558
557" 558height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
558<!-- End Google Tag Manager (noscript) --> <meta itemprop="url" content="https://www.tworoad.tw/" /> <!-- Mobile Header --> <!--googleoff: index--> <div id="mobile-navbar" class="navbar navbar-static-top FixedTop visible-xs visible-sm" style="display:none;"> <div class="navbar-inner"> <ul class="nav"> <li id="menu-btn" class="menu-btn"><span>☰</span></li> <li class="site-title"> <a href="https://www.tworoad.tw/"><img src="//image-cdn-flare.qdm.cloud/q67b3ef089f8e6/image/data/2023/03/28/68f32fc16614c723f1a2092b597c5d89.jpg" title="äºè·¯è¿èç³ l ç¨å¿ï¼æéä»¶äºåå°æ¥µè´" style="width:auto;max-height:56px;" /></a> </li> <li id="shopping-cart-list" class="shopping-cart" data-direction="left" style="overflow: visible; margin: 0px; padding-right: 10px;"><a href="https://www.tworoad.tw/cart"><i class="fa fa-shopping-cart" aria-hidden="true"></i><span class="badge hidden">0</span></a></li> </ul> </div> </div> <!--googleon: index--> <!-- Pushy Menu --> <nav id="mobile-menu-pushy" class="pushy pushy-left visible-xs visible-sm" style="display:none;"> <div class="pushy-content"> <ul> <li class="pushy-menu-storename"> <a href="https://www.tworoad.tw/">äºè·¯è¿èç³ l ç¨å¿ï¼æéä»¶äºåå°æ¥µè´</a> <span><i class="fa fa-times" aria-hidden="true"></i></span> </li> <div class="pushy-menu-main"> <li class="header-logged-menu pushy-submenu hidden"> <button><i class="fa fa-user-circle-o"></i> <span id="header-mobile-user"></span></button> <ul> <li class="pushy-link"><a href="/account">æå¡ä¸å¿</a></li> <li class="pushy-link"><a href="https://www.tworoad.tw/account/edit">æçè³æ</a></li> <li class="pushy-link"><a href="https://www.tworoad.tw/account/reward">æçç´
å©</a></li> <div class="pushy-menu-divide"></div> <li class="pushy-link"><a href="https://www.tworoad.tw/wishlist">顿æ¸
å®</a></li> <div class="pushy-menu-divide"></div> <li class="pushy-link"><a href="https://www.tworoad.tw/newsletter">æçè¨é±</a></li> </ul> </li> <li class="header-logged-menu pushy-submenu hidden"> <button><i class="fa fa-truck" aria-hidden="true"></i> æçè¨å®</button> <ul> <li class="pushy-link"><a href="https://www.tworoad.tw/order">æçè¨å®</a></li> <li class="pushy-link"><a href="https://www.tworoad.tw/account/return">é/æè²¨ç´é</a></li> </ul> </li> <li class="pushy-link header-none-logged-menu hidden"><a href="/login"><i class="fa fa-user-circle-o"></i> æå¡ä¸å¿ (ç»å
¥)</a></li> <li class="pushy-link header-none-logged-menu hidden"><a href="/guestorder"><i class="fa fa-search-plus" aria-hidden="true"></i> æè¦æ¥è¨å®</a></li> <li class="pushy-submenu"> <button><i class="fa fa-commenting-o" aria-hidden="true"></i> æ¾åºé·</button> <ul> <li class="pushy-link"><a href="mailto:[email protected]" target="_blank" rel="noopener noreferrer nofollow">é»åéµä»¶</a></li> <li class="pushy-link"><a target="_blank" rel="noopener noreferrer nofollow" href="https://line.naver.jp/ti/p/~@217yujvr">LINE@</a></li> <li class="pushy-link"><a href="https://www.messenger.com/t/tworoad2021" target="_blank" rel="noopener noreferrer nofollow">Facebookè¨æ¯</a></li> </ul> </li> <li class="pushy-link header-logged-menu hidden"><a href="https://www.tworoad.tw/account/logout"><i class="fa fa-sign-out" aria-hidden="true"></i> ç»åº</a></li> </div> <!-- \.pushy-menu-main --> <div class="pushy-menu-divide"></div> <div class="search"> <form method="get" action="/search"> <span class="fa fa-search"></span> <input type="text" name="q" placeholder="ååééµå" autocomplete="off"> </form><br/> </div> <div class="pushy-menu-category"> <li class="pushy-link home-item-link"><a href="https://www.tworoad.tw/">ååºé¦é </a></li> <li class="pushy-link" > <a href="/ç¨å¿æéä»¶äºåå°æ¥µè´" >åçæ
äº</a> </li> <li class="pushy-link" > <a href="/latest" >å
¨é¨åå</a> </li> <li class="pushy-link" > <a href="/ä¸å®åè«å
é±è®å·" >購買è³è¨</a> </li> <li class="pushy-link" > <a href="/äºè·¯ä¾è§£æ" >常è¦åé¡</a> </li> <li class="pushy-submenu" > <button><span class="pushy-submenu-parent" data-url="https://www.tworoad.tw/ç§å»æå®¤" >ç§å»æå®¤</span></button> <ul> <li class="pushy-link"> <a href="index.php?route=information/information&information_id=15" >XOé¬çè¿èç³</a> </li> <li class="pushy-link"> <a href="index.php?route=information/information&information_id=12" >泡èçè¿èç³</a> </li> <li class="pushy-link"> <a href="index.php?route=information/information&information_id=16" >æ¶¼æè¿èç³</a> </li> <li class="pushy-link"> <a href="index.php?route=information/information&information_id=20" >è±ææ¡å£½å¸</a> </li> <li class="pushy-link"> <a href="index.php?route=information/information&information_id=17" >è¸è¿èç³</a> </li> <li class="pushy-link"> <a href="index.php?route=information/information&information_id=21" >èçæ¡å£½å¸</a> </li> <li class="pushy-link"> <a href="index.php?route=information/information&information_id=19" >è¿èç³æµ·èæ²</a> </li> <li class="pushy-link"> <a href="index.php?route=information/information&information_id=18" >è¿èç³çåç</a> </li> <li class="pushy-link"> <a href="index.php?route=information/information&information_id=13" >
558éæ²çè¿èç³</a> </li> <li class="pushy-link"> <a href="index.php?route=information/information&information_id=14" >é®ªéæ¡å£½å¸(çªè)</a> </li> </ul> </li> </div> </ul> </div> </nav> <!-- Site Overlay --> <div class="site-overlay"></div> <header id="header" class="visible-lg visible-md navbar" itemscope itemtype="https://schema.org/Organization"> <div class="container"> <a itemprop="url" class="logo" href="https://www.tworoad.tw/"><img onerror='imgError(this);' itemprop="logo" src="//image-cdn-flare.qdm.cloud/q67b3ef089f8e6/image/data/New_version/é ç_logo.jpg" title="äºè·¯è¿èç³ l ç¨å¿ï¼æéä»¶äºåå°æ¥µè´" alt="äºè·¯è¿èç³ l ç¨å¿ï¼æéä»¶äºåå°æ¥µè´" /></a> <div id="search" class="search searchbox input-append" itemprop="potentialAction" itemscope itemtype="https://schema.org/SearchAction"> <meta itemprop="target" content="https://www.tworoad.tw/search?q={filter_name}" /> <input itemprop="query-input" type="search" name="filter_name" value="" placeholder="æå°" class="input-xxlarge" /> <i class="icon-search button-search"></i> </div> <ul id="contact-block"> <li style="background-color:transparent;background-image:none;"> <a href="mailto:[email protected]" target="_blank" rel="noopener noreferrer nofollow" title="寫Email"> <i class="fa fa-envelope-o"></i> </a> </li> <li style="background-color:transparent;background-image:none;"> <a href="https://www.messenger.com/t/tworoad2021" target="_blank" rel="noopener noreferrer nofollow" title="Facebookè¨æ¯"> <i class="fa fa-facebook-square"></i> </a> </li> <li style="background-color:transparent;background-image:none;"> <a target="_blank" rel="noopener noreferrer nofollow" href="https://line.naver.jp/ti/p/~@217yujvr" title="LINE ID"><i class="fab fa-line"></i></a> </li> </ul> <ul id="main-nav" class="nav nav-pills pull-right"> <li></li> <li></li> <li><section class="float-mini-cart" id="cart"> <style> 559.mini-cart-info td, .mini-cart-total td { line-height:20px; } 560</style> <div class="heading"> <i class="fa fa-shopping-cart"></i> 561 ( <a href="https://www.tworoad.tw/cart" id="cart-total"> 562 0 ä»¶åå $0 </a> 563 ) 564 </div> <div class="content"> <div class="empty white">è³¼ç©è»æ²æå å ¥ä»»ä½åå</div> <a id="closecart" class="close" title="Close" onclick="$('#cart').removeClass('active');">Ã</a> </div> </section></li> <li id="header-logged-menu" class="dropdown hidden"> <a href="https://www.tworoad.tw/account" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user-o"></i> <span id="header-logged-user"></span> <b class="caret"></b></a> <ul class="dropdown-menu"> <li><a href="https://www.tworoad.tw/account">æå¡ä¸å¿</a></li> <li><a href="https://www.tworoad.tw/order">æçè¨å®</a></li> <li><a href="https://www.tworoad.tw/wishlist">é¡ææ¸ å®</a></li> <li class="divider"></li> <li><a href="https://www.tworoad.tw/account/logout">ç»åº</a></li> </ul> </li> <li id="header-none-logged-menu"><p style="margin:7px 0px;"><a href="https://www.tworoad.tw/login" title="æå¡ç»å ¥" id="bt
564nLogin"><i class="fa fa-user-o"></i> æå¡ç»å ¥</a></p></li> </ul> </div> </header> <div id="content-wrapper"> <div class="container"> <nav id="mainnav" class="navbar visible-lg visible-md" role="navigation" style="visibility:hidden"> <div class="navbar-inner"> <div class="container"> <button type="button" class="button button-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span> 565 566 é¸å®</span> <i class="icon-navbtn"></i> </button> <div class="nav-collapse"> <ul class="nav"> <li data-categoryid="9" href="/ç¨å¿æéä»¶äºåå°æ¥µè´" > <a href="/ç¨å¿æéä»¶äºåå°æ¥µè´" ><img class="flipper" data-flipper="https://image-cdn-flare.qdm.cloud/q67b3ef089f8e6/image/data/åçæ äº_1.jpg" src="https://image-cdn-flare.qdm.cloud/q67b3ef089f8e6/image/data/åçæ äº_1.jpg" alt="åçæ äº" title="åçæ äº" /></a> </li> <li data-categoryid="8" href="/latest" > <a href="/latest" ><img class="flipper" data-flipper="https://image-cdn-flare.qdm.cloud/q67b3ef089f8e6/image/data/å ¨é¨åå.jpg" src="https://image-cdn-flare.qdm.cloud/q67b3ef089f8e6/image/data/å ¨é¨åå.jpg" alt="å ¨é¨åå" title="å ¨é¨åå" /></a> </li> <li data-categoryid="10" href="/ä¸å®åè«å é±è®å·" > <a href="/ä¸å®åè«å é±è®å·" ><img class="flipper" data-flipper="https://image-cdn-flare.qdm.cloud/q67b3ef089f8e6/image/data/購買è³è¨.jpg" src="https://image-cdn-flare.qdm.cloud/q67b3ef089f8e6/image/data/購買è³è¨.jpg" alt="購買è³è¨" title="購買è³è¨" /></a> </li> <li data-categoryid="11" href="/äºè·¯ä¾è§£æ" > <a href="/äºè·¯ä¾è§£æ" ><img class="flipper" data-flipper="https://image-cdn-flare.qdm.cloud/q67b3ef089f8e6/image/data/常è¦åé¡.jpg" src="https://image-cdn-flare.qdm.cloud/q67b3ef089f8e6/image/data/常è¦åé¡.jpg" alt="常è¦åé¡" title="常è¦åé¡" /></a> </li> <li data-categoryid="12" href="https://www.tworoad.tw/ç§å»æå®¤" class="dropdown"> <a href="https://www.tworoad.tw/ç§å»æå®¤" ><img class="flipper" data-flipper="https://image-cdn-flare.qdm.cloud/q67b3ef089f8e6/image/data/ç§å»æå®¤_1.jpg" src="https://image-cdn-flare.qdm.cloud/q67b3ef089f8e6/image/data/ç§å»æå®¤_1.jpg" alt="ç§å»æå®¤" title="ç§å»æå®¤" /></a> <ul class="dropdown-menu"> <li id="50" ><a href="index.php?route=information/information&information_id=15" data-hover="">XOé¬çè¿èç³</a> </li> <li id="51" ><a href="index.php?route=information/information&information_id=12" data-hover="">泡èçè¿èç³</a> </li> <li id="52" ><a href="index.php?route=information/information&information_id=16" data-hover="">æ¶¼æè¿èç³</a> </li> <li id="53" ><a href="index.php?route=information/information&information_id=20" data-hover="">è±ææ¡å£½å¸</a> </li> <li id="54" ><a href="index.php?route=information/information&information_id=17" data-hover="">è¸è¿èç³</a> </li> <li id="55" ><a href="index.php?route=information/information&information_id=21" data-hover="">èçæ¡å£½å¸</a> </li> <li id="56" ><a href="index.php?route=information/information&information_id=19" data-hover="">è¿èç³æµ·èæ²</a> </li> <li id="57" ><a href="index.php?route=information/information&information_id=18" data-hover="">è¿èç³çåç</a> </li> <li id="58" ><a href="index.php?route=information/information&information_id=13" data-hover="">éæ²çè¿èç³</a> </li> <li id="59" ><a href="index.php?route=information/information&information_id=14" data-hover="">é®ªéæ¡å£½å¸(çªè)</a> </li> </ul> </li> </ul> </div> </div> </div> </nav><!-- #navbar --> </div><!-- .container --> <div class="fluid-container"> <div id="content-top"></div> </div><!-- .fluid-container --> <div id="body-outer-container" class="container"> <div class="container-inner"> <style> 567#login .control-group.success { margin: 0px; } 568#login input { min-width: 100%; width: 100%; font-size: 20px; line-height: 46px; height:46px; padding:6px; } 569#login .center-or-bar { margin-bottom: 26px; display: flex; width: 100%; justify-content: center; align-items: center; text-align: center; } 570#login .center-or-bar:before, #login .center-or-bar:after { content: ''; border-top: 1px solid #CFCFCF; margin: 0 20px 0 0; flex: 1 0 20px; } 571#login .center-or-bar:after { margin: 0 0 0 20px; } 572#login .password-forgotten-recovery, .password-forgotten-recovery:visited { color: #777; } 573.contentset span { padding: 0px; } 574.fb_iframe_widget { display: block; } 575#maincontent .button { font-weight: bold; height: 42px; line-height: 42px; padding: 0px; font-size: 15px; } 576#login a.button-facebook, .button-facebook, .button-facebook:hover{border-color:#29447e #29447e #1a356e;color:#fff;background:#4469b0;-webkit-box-shadow:0 1px 0 rgba(0, 0, 0, 0.1), inset 0 1px 0 #8a9cc2;-moz-box-shadow:0 1px 0 rgba(0, 0, 0, 0.1), inset 0 1px 0 #8a9cc2;box-shadow:0 1px 0 rgba(0, 0, 0, 0.1), inset 0 1px 0 #8a9cc2;text-shadow:0 1px 1px rgba(100,100,100,0.75);} 577#maincontent .button.button-line{border-color:#00B300;color:#FFFFFF;background:#00C300;text-decoration:none;text-shadow:0 1px 1px rgba(100,100,100,0.35);} 578#maincontent .button.button-google{border-color:#ccc;color:#fff;background:#1a73e8;text-decoration:none;text-shadow: 0 1px 1px rgba(100,100,100,0.75);} 579#maincontent .button.btn-social.button-line:hover { background: #00E000; } 580#maincontent .button.btn-social.button-line:active { background: #00B300; } 581#maincontent .button.btn-social.button-google:hover { color:#999; background: #fff; text-shadow: none;} 582#maincontent .button.btn-social.button-google:active { background: #fff; } 583#maincontent .button.btn-social { position: relative; overflow: hidden; } 584#maincontent .button.btn-social>:first-child { position: absolute; left: 0; top: 0; bottom: 0; width: 42px; line-height: 42px; font-size: 1.92em; text-align: center; border-right: 1px solid rgba(0,0,0,.2); } 585#maincontent .button.btn-social>:first-child.fa-spin { border-right:none; } 586i.fa.fa-line{ width:42px; display:block; height:42px; color:white; text-decoration:none; padding-left:36px; } 587i.fa.fa-line:before{ content: ''; background:url('https://cdn.qdm.cloud/static/line/line_88.png'); background-size:cover; position:absolute; width:36px; height:36px; margin-left:-36px; top:2px; } 588#login-loading {position: fixed; display: none; width: 100%; height: 100%; top: 0; left: 0; text-align: center; opacity: 0.8; background-color: #000;z-index: 99; } 589#login-loading-spin { position: absolute; left:50%; top: 50%; z-index: 100; color:#fff; opacity: 0.8;} 590@media only screen and (max-width: 768px), only screen and (max-device-width: 667px) and (min-device-width: 375px) and (orientation: portrait), only screen and (max-device-width: 736px) and (min-device-width: 414px) and (orientation: portrait) { 591.button.button-inverse.button-block { line-height: 40px; line-height: 40px; font-size: 17px; font-weight: 300; font-family: Helvetica, Arial, sans-serif; } 592.button-facebook { height: 48px; line-height: 48px; padding: 0px; font-size: 17px; } 593#login .contentset { margin-top: 2px; } 594.success, .warning, .attention, .information { width: 90%; } 595#login-loading-spin { position: absolute; left:45%; top: 45%; z-index: 100; color:#fff; opacity: 0.8;} 596} 597 598</style> <ol class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"> <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"> <a itemprop="item" href="https://www.tworoad.tw/"> <span itemprop="name">é¦é </span> <meta itemprop="position" content="1" />
598 </a> <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"> 599 > <a itemprop="item" href="https://www.tworoad.tw/account"> <span itemprop="name">æå¡</span> <meta itemprop="position" content="2" /> </a> <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"> 600 > <a itemprop="item" href="https://www.tworoad.tw/login"> <span itemprop="name">ç»å ¥</span> <meta itemprop="position" content="3" /> </a> </li> </ol> <header class="heading"> <h1 class="visible-lg visible-md">æå¡ç»å ¥</h1><p> </p> </header> <section id="maincontent"> <div class="mainborder"> <div class="cart-inner" style="padding: 12px;"> <div class="row-fluid"> <div class="col-xs-12 col-md-6 col-md-offset-3 login"> <form action="https://www.tworoad.tw/login" method="post" enctype="multipart/form-data" id="login"> <p class="visible-lg-block"> </p> <div class="control-group"> </div> <div class="control-group"> <a data-no-instant href="https://www.tworoad.tw/line/login" class="button button-block button-line btn-social"><i class="fa fa-line" aria-hidden="true"></i> è LINE é£åç»å ¥</a><br/> </div> <center class="center-or-bar"><small>æ</small></center> <div class="control-group"> <label for="email" class="control-label"><b>ææ©è碼 / æ é»åéµä»¶</b></label> <div class="controls"> <input type="text" name="email" id="email" class="input-xlarge" autocomplete="off" /> </div> </div> <div class="control-group"> <label for="password" class="control-label"><b>å¯ç¢¼</b></label> <div class="controls"> <input type="password" name="password" class="input-xlarge" autocomplete="new-password" 601 autocapitalize="off" 602 spellcheck="false" /> </div> <p><a class="password-forgotten-recovery" href="https://www.tworoad.tw/account/forgotten">å¿è¨å¯ç¢¼?</a></p> </div> <input type="hidden" name="utm_source" value=""> <input type="hidden" name="utm_medium" value=""> <input type="hidden" name="utm_campaign" value=""> <input type="submit" value="帳å¯ç»å ¥" class="button button-inverse button-block" /> </p> <hr/> <p><a class="button button-inverse button-block" href="https://www.tworoad.tw/register">æè¦è¨»åæ°æå¡ <i class="fa fa-chevron-right" aria-hidden="true"></i></a></p> </div> <input type="hidden" name="csrf_token" value="1562f8ddac04fde4b793e5528b620d4bcebfaa997822bd1fd3c83e8ff20efc04" /> </form>
602<script> 603 // Block repeated logins while one is in flight (plain JS: jQuery loads later) 604 (function () { 605 var form = document.getElementById('login'); 606 if (!form) { return; } 607 var submitting = false; 608 var timer = null; 609 var buttons = form.querySelectorAll('input[type=submit], button[type=submit]'); 610 function setBusy(busy) { 611 submitting = busy; 612 if (timer) { clearTimeout(timer); timer = null; } 613 for (var i = 0; i < buttons.length; i++) { buttons[i].disabled = busy; } 614 } 615 form.addEventListener('submit', function (e) { 616 if (submitting) { e.preventDefault(); return; } 617 submitting = true; 618 setTimeout(function () { 619 // Another handler cancelled this submit: keep the form usable 620 if (e.defaultPrevented) { submitting = false; return; } 621 setBusy(true); 622 timer = setTimeout(function () { setBusy(false); }, 15000); 623 }, 0); 624 }); 625 window.addEventListener('pageshow', function () { setBusy(false); }); 626 })(); 627 </script>
627 </div> </div> <p> </p> <p> </p> </div> </div> </section><!-- #maincontent -->
627<script> 628 629 var prevent_dbl_click = 0; 630 631 var login_return_url = "/account"; 632 633 function confirmOptIn() { 634 FB.AppEvents.logEvent('MessengerCheckboxUserConfirmation', null, { 635 'app_id' : '162172840650014', 636 'page_id' : "306501696892771", 637 'user_ref' : 'q67b3ef089f8e620261009071702412313' 638 }); 639 } 640 641 642 function init_inline(){ 643 644 $('#login input').keydown(function(e) { 645 if (e.keyCode == 13) { 646 // Click the button instead of form.submit() so the in-flight guard sees it 647 e.preventDefault(); 648 var button = $('#login :submit').get(0); 649 if (button) { button.click(); } 650 } 651 }); 652 653 var u = navigator.userAgent; 654 //Lineå §çè¦½å¨ 655 if( u.indexOf('Line') > -1 ) { 656 $("#fb-login-button").remove(); 657 $("#fb-lineapp-login-button").show(); 658 } else { 659 $("#fb-login-button").show(); 660 $("#fb-lineapp-login-button").remove(); 661 } 662 663 } 664 function facebooLogin(){ 665 $(".fa-facebook-official").removeClass("fa-facebook-official").addClass("fa-circle-o-notch fa-spin fa-fw"); 666 } 667 </script>
667 </div> <!-- .container-inner --> </div> <!-- .container --> </div> <!-- #content_wrapper --> <input type="hidden" id="ga_utm_source" name="ga_utm_source" value=""> <input type="hidden" id="ga_utm_medium" name="ga_utm_medium" value=""> <input type="hidden" id="ga_utm_campaign" name="ga_utm_campaign" value=""> <footer id="footer" class="clearfix "> <div class="footer-inner container"> <div id="footer-inner-row" data-count="97" class="row-fluid clearfix"> <div class="span12 contact pull-right"> <h3> </h3> <p> </p> <p> </p> </div> </div> <!-- .row --> </div> <!-- /.footer-inner --> <div class="footer-bottom container "> <div id="footer-copyright" class="row-fluid"> <div id="payment-logo-list" class="pl-container"> <div class="pl-row"> </div> </div> <div id="copy"> <p>Copyright ©2026 äºè·¯è¿èç³</p> <p> 668 ç©é¦åéæéå ¬å¸ | 669 çµ±ä¸ç·¨è 90661570 </p> <!--googleoff: index--><span style="display:none;">q67b3ef089f8e6</span><!--googleon: index--> </div> <div id="qdm-copy"><a href='https://www.tworoad.tw/googlebase.xml' title="RSS" target='blank'><i class="fa fa-rss"></i></a><a href='https://www.tworoad.tw/sitemap'>ç¶²ç«å°å</a></div> </div> </div> </footer> <!-- #footer -->
669<script src="https://cdn.qdm.cloud/assets/js/LAB.min.js"></script>
669
669<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
669
669<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/1.4.1/jquery-migrate.min.js"></script>
669
669<script type="text/javascript"> 670 671 $(document).ready(function() { 672 var j = 0; 673 var delay = 3000; 674 function cycleStickyBarTop(){ 675 var jmax = $(".sticky-bar-top .sticky-bar-content").length -1; 676 if(jmax > 0){ 677 $(".sticky-bar-top .sticky-bar-content:eq(" + j + ")") 678 .animate({"opacity" : "1","z-index":"9998"} ,400) 679 .animate({"opacity" : "1","z-index":"9998"}, delay) 680 .animate({"opacity" : "0","z-index":"9"}, 400, function(){ 681 (j == jmax) ? j=0 : j++; 682 cycleStickyBarTop(); 683 }); 684 }else{ 685 $(".sticky-bar-top .sticky-bar-content:eq(" + j + ")") 686 .animate({"opacity" : "1","z-index":"9998"}, delay) 687 } 688 }; 689 cycleStickyBarTop(); 690 691 var i = 0; 692 function cycleStickyBarBottom(){ 693 var imax = $(".sticky-bar-bottom .sticky-bar-content").length -1; 694 if(imax > 0){ 695 $(".sticky-bar-bottom .sticky-bar-content:eq(" + i + ")") 696 .animate({"opacity" : "1","z-index":"9998"} ,400) 697 .animate({"opacity" : "1","z-index":"9998"}, delay) 698 .animate({"opacity" : "0","z-index":"9"}, 400, function(){ 699 (i == imax) ? i=0 : i++; 700 cycleStickyBarBottom(); 701 }); 702 }else{ 703 $(".sticky-bar-bottom .sticky-bar-content:eq(" + i + ")") 704 .animate({"opacity" : "1","z-index":"9998"}, delay) 705 } 706 707 }; 708 cycleStickyBarBottom(); 709 710 var k = 0; 711 function cycleStickyBarTopMobile(){ 712 var kmax = $(".mobile-sticky-bar-top .sticky-bar-content").length -1; 713 if(kmax > 0){ 714 $(".mobile-sticky-bar-top .sticky-bar-content:eq(" + k + ")") 715 .animate({"opacity" : "1","z-index":"9998"} ,400) 716 .animate({"opacity" : "1","z-index":"9998"}, delay) 717 .animate({"opacity" : "0","z-index":"9"}, 400, function(){ 718 (k == kmax) ? k=0 : k++; 719 cycleStickyBarTopMobile(); 720 }); 721 }else{ 722 $(".mobile-sticky-bar-top .sticky-bar-content:eq(" + k + ")") 723 .animate({"opacity" : "1","z-index":"9998"}, delay) 724 } 725 }; 726 cycleStickyBarTopMobile(); 727 728 //COUNTDOWN TIMER 729 $(".sticky-bar-countdown").each(function(){ 730 731 var sticky_bar_date = $(this).attr("data-countdown-date").replace(/-/g,'/'); 732 var sticky_bar_countdown_id = $(this).attr("id"); 733 var countDownDate = new Date(sticky_bar_date).getTime(); 734 735 var x = setInterval(function() { 736 737 var now = new Date().getTime(); 738 739 var distance = countDownDate - now; 740 741 var days = Math.floor(distance / (1000 * 60 * 60 * 24)); 742 var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); 743 var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)); 744 var seconds = Math.floor((distance % (1000 * 60)) / 1000); 745 746 if(hours<10){ 747 var hours1 = "0"+hours; 748 }else{ 749 var hours1 = hours; 750 } 751 if(minutes<10){ 752 var minutes1 = "0"+minutes; 753 }else{ 754 var minutes1 = minutes; 755 } 756 if(seconds<10){ 757 var seconds1 = "0"+seconds; 758 }else{ 759 var seconds1 = seconds; 760 } 761 762 if( $("#" + sticky_bar_countdown_id).length ) { 763 document.getElementById(sticky_bar_countdown_id).innerHTML = " "+days+ " DAY " + hours1 + ": " 764 + minutes1 + ": " + seconds1 + " "; 765 } 766 767 if (distance < 0) { 768 clearInterval(x); 769 //document.getElementById(sticky_bar_countdown_id).innerHTML = "-"; 770 $("#"+sticky_bar_countdown_id).remove(); 771 } 772 }, 1000); 773 774 }); 775 776 }); 777 778 jQuery.ajaxPrefilter( function( s ) { 779 if ( s.crossDomain ) { 780 s.contents.script = false; 781 } 782 }); 783 784 var loc = window.location.href, index = loc.indexOf('#'); 785 if (index > 0) { 786 try { 787 var urlHash = loc.split("#")[1]; 788 if( urlHash ) { 789 if( $('#' + urlHash).length ) { 790 $('html,body').animate({ 791 scrollTop: $('#' + urlHash).offset().top 792 }, 1200); 793 } else { 794 window.location = loc.substring(0, index) + "&" + loc.substring(index+1); 795 } 796 } 797 } catch(err) { } 798 } 799 800 var readyInitPage = 1; 801 var doAdjust = true; 802 var doAdjustCounter = 0; 803 var jsLoadTimeout = null; 804 var previousWidth = 0; 805 var maxHeight = 0; 806 var flipper_random_status = 0; 807 var float_banner_count = 0; 808 var lazy = 1; 809 var transInitial = -280; 810 var mDistance = 0; 811 812 if (window!= top) top.location.href = location.href; 813 814 //20210713 add menu url target 815 $(".pushy-submenu button span").click(function(){ 816 if($(this).attr("target")){ 817 $(this).removeClass("pushy-submenu-parent"); 818 if($(this).parents("li").hasClass("pushy-submenu-open")){ 819 window.open($(this).data("url"),"_blank"); 820 } 821 } 822 }); 823 824 $(".pushy-menu-storename span").click(function(){ 825 $("#myBody").removeClass("pushy-open-left"); 826 }); 827 828 function getScript(url,success){ 829 var script = document.createElement('script'); 830 script.type = 'text/javascript'; 831 script.src = url; 832 var head=document.getElementsByTagName('head')[0], done=false; 833 script.onload=script.onreadystatechange = function(){ 834 if ( !done && (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete') ) { 835 done=true; 836 success(); 837 script.onload = script.onreadystatechange = null; 838 head.removeChild(script); 839 } 840 }; 841 head.appendChild(script); 842 } 843 844 function getParams(a){var b=document.getElementsByTagName("script");for(var i=0;i<b.length;i++){if(b[i].src.indexOf("/"+a)>-1){var c=b[i].src.split("?").pop().split("&");var p={};for(var j=0;j<c.length;j++){var d=c[j].split("=");p[d[0]]=d[1]}return p}}return{}} 845 846 function adjustBoxHeights() { 847 maxHeight1 = 270; 848 maxHeight2 = 270; 849 maxHeight3 = 270; 850 maxHeight4 = 270; 851 maxHeight5 = 270; 852 853 $('.content-top .product-box > div').each(function(){ 854 $(this).height('auto'); 855 if (maxHeight2 < $(this).height()) { maxHeight2 = $(this).height(); } 856 }); 857 $('.content-top .product-box > div').each(function(){ 858 if( maxHeight2 ) { 859 $(this).height(maxHeight2); 860 } 861 }); 862 863 $('.content-bottom .product-box > div').each(function(){ 864 $(this).height('auto'); 865 if (maxHeight3 < $(this).height()) { maxHeight3 = $(this).height(); } 866 }); 867 $('.content-bottom .product-box > div').each(function(){ 868 if( maxHeight3 ) { 869 $(this).height(maxHeight3); 870 } 871 }); 872 873 $('.product-grid > div').each(function(){ 874 var img_src = $(this).find(".image img[src]").attr("src"); 875 try { 876 var img_src_ext = img_src.split('.').pop().toLowerCase(); 877 } catch(err) { 878 img_src_ext = ""; 879 } 880 $(this).height('auto'); 881 if( $( "#myBody" ).hasClass("product-category") ){ 882 img_src_ext = ""; 883 } 884 if( img_src_ext != "gif" ) { 885 if (maxHeight1 < $(this).height()) { maxHeight1 = $(this).height(); } 886 } else { 887 $(this).addClass("gif-tag"); 888 } 889 }); 890 var img_gif_height = 0; 891 $('.product-grid > div').each(function(){ 892 var img_src = $(this).find(".image img[src]").attr("src"); 893 try { 894 var img_src_ext = img_src.split('.').pop().toLowerCase(); 895 } catch(err) { 896 img_src_ext = ""; 897 } 898 if( maxHeight1 ){ 899 $(this).height(maxHeight1); 900 if( img_src_ext != "gif" ) { 901 img_gif_height = $(this).find(".image img").height(); 902 } 903 } 904 }); 905 $('.product-grid > div.gif-tag').attr("style",""); 906 if( img_gif_height ) { 907 $('.product-grid > div.gif-tag').find(".image img").attr("style","height:" + img_gif_height + "px;width:auto;"); 908 } 909 910 $('.box-content').each(function(index,elmain){ 911 $(elmain).find('.product-box').each(function(index,el){ 912 maxHeight1 = 0; 913 $(el).find('.grid-box').each(function(index,el2){ 914 $(el2).height('auto'); 915 }); 916 $(el).find('.grid-box .inner').each(function(index,el2){ 917 if (maxHeight1 < $(el2).height()) { maxHeight1 = $(el2).height(); } 918 }); 919 maxHeight1 = maxHeight1 + 18; 920 $(el).find('.grid-box').each(function(index,el2){ 921 if( maxHeight1 ) { 922 $(el2).height(maxHeight1); 923 } 924 }); 925 }); 926 }); 927 928 $('#related-products').each(function(index,elmain){ 929 $(elmain).imagesLoaded(function(){ 930 $(this).find('.product-box').each(function(index,el){ 931 maxHeight1 = 0; 932 $(el).find('.grid-box').each(function(index,el2){ 933 $(el2).height('auto'); 934 }); 935 $(el).find('.grid-box .inner').each(function(index,el2){ 936 if (maxHeight1 < $(el2).height()) { maxHeight1 = $(el2).height(); } 937 }); 938 maxHeight1 = maxHeight1 + 36; 939 if( maxHeight1 < 220 ) maxHeight1 = 220; 940 if( !is.mobile() ) { 941 if( maxHeight1 < 340 ) maxHeight1 = 340; 942 } 943 $(el).find('.grid-box').each(function(index,el2){ 944 if( maxHeight1 ) { 945 $(el2).height(maxHeight1); 946 } 947 }); 948 }); 949 }); 950 }); 951 952 $('.content-bottom #related-products').each(function(index,elmain){ 953 var contentset_height = parseInt($('.content-bottom #related-products .contentset').height()); 954 if( contentset_height ) contentset_height = contentset_height + 70; 955 $(elmain).imagesLoaded(function(){ 956 $(this).find('.product-box').each(function(index,el){ 957 maxHeight1 = 0; 958 $(el).find('.grid-box').each(function(index,el2){ 959 $(el2).height('auto'); 960 }); 961 $(el).find('.grid-box .inner').each(function(index,el2){ 962 if (maxHeight1 < $(el2).height()) { maxHeight1 = $(el2).height(); } 963 }); 964 maxHeight1 = maxHeight1 + 36 + contentset_height; 965 if( maxHeight1 < 220 ) maxHeight1 = 220; 966 if( !is.mobile() ) { 967 if( maxHeight1 < 340 ) maxHeight1 = 340; 968 } 969 $(el).find('.grid-box').each(function(index,el2){ 970 if( maxHeight1 ) { 971 $(el2).height(maxHeight1); 972 } 973 }); 974 }); 975 }); 976 }); 977 978 $('.any-products').each(function(index,el){ 979 980 if(is.mobile()){ 981 $(el).find(".grid-box").attr("style",""); 982 } 983 984 maxHeight5 = 0; 985 $(el).find('.any-box > div').each(function(index,el2){ 986 $(el2).height('auto'); 987 if (maxHeight5 < $(el2).height()) { maxHeight5 = $(el2).height(); } 988 }); 989 $(el).find('.any-box > div').each(function(index,el2){ 990 if( maxHeight5 ) { 991 $(el2).height(maxHeight5); 992 } 993 }); 994 $(el).find('.grid-box > .inner').each(function(index,el2){ 995 $(el2).css("display", "block"); 996 }); 997 }); 998 } 999
1000 var supportsNatural = ( "naturalWidth" in (new Image()) ); 1001 1002 function initDeferImages() { 1003 [].forEach.call(document.querySelectorAll('img[data-src]'), function(img) { 1004 img.setAttribute('src', img.getAttribute('data-src')); 1005 img.onload = function() { 1006 this.removeAttribute('data-src'); 1007 if (this.style.opacity !== undefined) { 1008 this.style.opacity = 1; 1009 } 1010 var naturalWidth = supportsNatural ? this.naturalWidth : $(this).width(); 1011 if( naturalWidth == 0 ) { 1012 this.src += '?timestamp=' + new Date().getTime(); 1013 } 1014 }; 1015 }); 1016 $(".grid-box img,.product-row img").each(function(){ 1017 var _this = $(this); 1018 _this.imagesLoaded(function(){ 1019 _this.animate({opacity: 1.0}, 100); 1020 _this.closest('.grid-box').find('.onsale').removeClass("hidden"); 1021 _this.closest('.grid-box').find('.name').removeClass("hidden"); 1022 _this.closest('.grid-box').find('.price').removeClass("hidden"); 1023 _this.closest('.grid-box').find('.label-important').removeClass("hidden"); 1024 _this.closest('.grid-box').find('.load-thumb-conver').remove(); 1025 _this.closest('.product-row').find('.load-thumb-conver').remove(); 1026 try { 1027 if (typeof _this.data('flipper') !== 'undefined') { 1028 _this.flipper(); 1029 } 1030 } catch(err) { } 1031 _this.height('auto'); 1032 if( (lazy == $(".grid-box img").length) ) { adjustBoxHeights(); } 1033 lazy++; 1034 }); 1035 }); 1036 } 1037 1038 function updateCartProductCount() { 1039 $.get("index.php?route=module/cart/GetProductTotal", function(data) { 1040 $("#shopping-cart-list .badge").html(data); 1041 if(data>0){ 1042 $("#shopping-cart-list .badge").removeClass("hidden"); 1043 $("#shopping-cart-list .badge").removeClass("animated"); 1044 $("#shopping-cart-list .badge").addClass("animated bounce"); 1045 } else { 1046 $("#shopping-cart-list .badge").addClass("hidden"); 1047 } 1048 }); 1049 } 1050 1051 function updateQuantityByProductKey(key, quantity) { 1052 quantity = typeof(quantity) != 'undefined' ? quantity : 1; 1053 $.ajax({ 1054 url: 'index.php?route=checkout/cart/updateProductQuantity', 1055 type: 'post', 1056 data: { 'quantity':quantity, 'key': key }, 1057 dataType: 'json', 1058 success: function(json) { 1059 $.get( "index.php?route=module/cart/list", function( data ) { 1060 $(".slidePanel .slidePanel-content").html(data); 1061 updateCartProductCount(); 1062 }); 1063 } 1064 }); 1065 } 1066 1067 function removeProductFromSideCart(key, idx) { 1068 //var newkey = encodeURIComponent(key); 1069 var newkey = key; 1070 $.get("index.php?route=module/cart&remove=" + newkey, function(data) { 1071 $.get( "index.php?route=module/cart/list", function( data ) { 1072 $(".slidePanel .slidePanel-content").html(data); 1073 updateCartProductCount(); 1074 }); 1075 }); 1076 $("#producr-list-" + idx).fadeOut(1200, function() { $(this).remove(); }); 1077 return false; 1078 } 1079 1080 function openSideCart(ta_product_id){ 1081 var slidePanelVisible = $(".slidePanel").hasClass("slidePanel-show"); 1082 if( slidePanelVisible ) { 1083 $("#content-wrapper").off("click"); 1084 $.slidePanel.hide(); 1085 } else { 1086 updateCartProductCount(); 1087 $.slidePanel.show({ 1088 url: 'index.php?route=module/cart/list' 1089 }, { 1090 direction: "left", 1091 duration: '500', 1092 mouseDrag: false, 1093 touchDrag: false, 1094 pointerDrag: false, 1095 loading: { 1096 template: function(options) { 1097 return '<div class="' + options.classes.loading + '"><div class="spinner"><i class="fa fa-circle-o-notch fa-spin fa-3x fa-fw"></i><span class="sr-only">Loading...</span></div></div>'; 1098 } 1099 } 1100 }); 1101 $("#content-wrapper").on('click', function(event) { 1102 $("#content-wrapper").off("click"); 1103 $.slidePanel.hide(); 1104 event.preventDefault(); 1105 event.stopPropagation(); 1106 1107 var t_url = location.href; 1108 var c_url = "https://www.tworoad.tw/cart"; 1109 1110 if(t_url == c_url){ 1111 location.reload(); 1112 } 1113 1114 }); 1115 $(".fancybox-product").on('click', function(event) { 1116 $.slidePanel.hide(); 1117 event.preventDefault(); 1118 event.stopPropagation(); 1119 1120 var t_url = location.href; 1121 var c_url = "https://www.tworoad.tw/cart"; 1122 1123 if(t_url == c_url){ 1124 location.reload(); 1125 } 1126 1127 }); 1128 } 1129 } 1130 1131 function gaTrackAddToCart(page, product_ids) { 1132 1133 product_ids.forEach(function(item){ 1134 1135 try { 1136 1137 // UA 1138 dataLayer.push({ 1139 'event': 'addToCart', 1140 'ecommerce': { 1141 'currencyCode': '', 1142 'add': { 1143 'products': [{ 1144 'name': item.p_name, 1145 'id': item.p_id, 1146 'price': item.p_prices, 1147 'quantity': item.p_qty 1148 }] 1149 } 1150 } 1151 }); 1152 1153 // GA4 1154 dataLayer.push({ 1155 'event': 'add_to_cart', 1156 'ecommerce': { 1157 'items': [{ 1158 'item_name': item.p_name, 1159 'item_id': item.p_id, 1160 'price': item.p_prices, 1161 'quantity': item.p_qty 1162 }] 1163 } 1164 }); 1165 1166 global_quuid = QUUID(); 1167 var item_p_prices = parseFloat(item.p_prices); 1168 item_p_prices = Number(item_p_prices); 1169 if( isNaN(item_p_prices) ) { 1170 item_p_prices = 0; 1171 } 1172 fbq('track', 'AddToCart', { 1173 content_name: item.p_name, 1174 value: item_p_prices, 1175 currency: 'TWD' 1176 }, {eventID: global_quuid + "ccc"}); 1177 1178 // fb-capi-coverage Step 2: ç¨ç¶å item è¦å¯« gecommProductToCartï¼ 1179 // ç¢ºä¿ CAPI AddToCart éçæ¯ãæ¬æ¬¡è¿ä»£ååãèéè¿´åçµææ®ççæå¾ä¸åã 1180 gecommProductToCart.product_id = item.p_id; 1181 gecommProductToCart.quantity = item.p_qty; 1182 gecommProductToCart.product_name = item.p_name; 1183 gecommProductToCart.price = item.p_prices; 1184 1185
1186try { setCookie("qdmfbevent_id", global_quuid + "ccc", 5); } catch (error) { } 1187 1188(function() { 1189 // CAPI AJAX must survive navigation (cart/add â instant_checkout redirect 1s window). 1190 // Prefer navigator.sendBeacon (designed for unload-time delivery); fallback to fetch keepalive. 1191 var url = "https://www.tworoad.tw/index.php?route=pixcel/facebook/capi_add_to_cart&quuid=" + global_quuid + "ccc"; 1192 var payload = JSON.stringify(gecommProductToCart); 1193 var sent = false; 1194 1195 if (typeof navigator !== "undefined" && typeof navigator.sendBeacon === "function") { 1196 try { 1197 var blob = new Blob([payload], { type: "text/plain" }); 1198 sent = navigator.sendBeacon(url, blob); 1199 } catch (e) { sent = false; } 1200 } 1201 1202 if (!sent && typeof fetch === "function") { 1203 try { 1204 fetch(url, { 1205 method: "POST", 1206 headers: { "Content-Type": "text/plain" }, 1207 body: payload, 1208 keepalive: true, 1209 credentials: "include" 1210 }).catch(function() {}); 1211 } catch (e) {} 1212 } 1213})(); 1214 1215 1216 } catch (e) { } 1217 1218 }); 1219 1220 } 1221 1222 // Defers instant-add until the async-loaded $.fancybox exists, so early 1223 // clicks no longer hit an undefined open() and feel dead. One poller at a 1224 // time, latest click wins - repeated clicks don't stack duplicate opens. 1225 // Keep in sync with common/footer_cart.tpl (same guard for '/cart' URLs). 1226 var _fancyboxPendingCb = null; 1227 var _fancyboxPolling = false; 1228 function whenFancyboxReady(callback){ 1229 if (typeof $.fancybox !== 'undefined') { callback(); return; } 1230 _fancyboxPendingCb = callback; // latest click wins if several arrive while waiting 1231 if (_fancyboxPolling) { return; } 1232 _fancyboxPolling = true; 1233 (function poll(attempt){ 1234 if (typeof $.fancybox !== 'undefined') { 1235 _fancyboxPolling = false; 1236 var cb = _fancyboxPendingCb; 1237 _fancyboxPendingCb = null; 1238 if (cb) { cb(); } 1239 return; 1240 } 1241 if (attempt < 50) { setTimeout(function(){ poll(attempt + 1); }, 100); return; } 1242 _fancyboxPolling = false; 1243 _fancyboxPendingCb = null; 1244 if (window.console && console.warn) { console.warn('fancybox not ready after 5s; instant add aborted'); } 1245 })(0); 1246 } 1247 1248 function InstantAddToCart(product_id, quantity, promotion_id, free_present_id){ 1249 1250 if( product_id && quantity ) { 1251 1252 gecommProductToCart.product_id = product_id; 1253 gecommProductToCart.quantity = quantity; 1254 1255 try { 1256 1257 var p_name = $("[data-producttlid='"+product_id+"'] .name [itemprop='name']").html(); 1258 var p_prices = $("[data-producttlid='"+product_id+"'] .price[data-price]").data("price"); 1259 gecommProductToCart.product_name = p_name; 1260 1261 gecommProductToCart.price = p_prices; 1262 1263 // UA 1264 dataLayer.push({ 1265 'event': 'addToCart', 1266 'ecommerce': { 1267 'currencyCode': '', 1268 'add': { 1269 'products': [{ 1270 'name': p_name, 1271 'id': product_id, 1272 'price': p_prices, 1273 'quantity': quantity 1274 }] 1275 } 1276 } 1277 }); 1278 1279 // GA4 1280 dataLayer.push({ 1281 'event': 'add_to_cart', 1282 'ecommerce': { 1283 'items': [{ 1284 'item_name': p_name, 1285 'item_id': product_id, 1286 'price': p_prices, 1287 'quantity': quantity 1288 }] 1289 } 1290 }); 1291 1292 var product_category = ""; 1293 $.getJSON( "index.php?route=common/footer/getProductCategory&product_id=" + product_id, function( data ) { 1294 1295 if(data) product_category = data; 1296 1297 if(product_category != ""){ 1298 gtag('event', 'add_to_cart', { 1299 'value': p_prices, 1300 'items': [{ 1301 'id' : product_id, 1302 'item_id' : product_id, 1303 'item_name' : p_name, 1304 'price' : p_prices, 1305 'quantity' : quantity, 1306 'google_business_vertical': 'retail', 1307 'item_category': product_category 1308 }] 1309 }); 1310 }else{ 1311 gtag('event', 'add_to_cart', { 1312 'value': p_prices, 1313 'items': [{ 1314 'id' : product_id, 1315 'item_id' : product_id, 1316 'item_name' : p_name, 1317 'price' : p_prices, 1318 'quantity' : quantity, 1319 'google_business_vertical': 'retail' 1320 }] 1321 }); 1322 } 1323 1324 }); 1325 1326 1327 global_quuid = QUUID(); 1328 var item_p_prices = parseFloat(p_prices); 1329 item_p_prices = Number(item_p_prices); 1330 if( isNaN(item_p_prices) ) { 1331 item_p_prices = 0; 1332 } 1333 fbq('track', 'AddToCart', { 1334 content_name: p_name, 1335 value: item_p_prices, 1336 currency: 'TWD' 1337 }, {eventID: global_quuid + "ccc"}); 1338 1339
1340try { setCookie("qdmfbevent_id", global_quuid + "ccc", 5); } catch (error) { } 1341 1342(function() { 1343 // CAPI AJAX must survive navigation (cart/add â instant_checkout redirect 1s window). 1344 // Prefer navigator.sendBeacon (designed for unload-time delivery); fallback to fetch keepalive. 1345 var url = "https://www.tworoad.tw/index.php?route=pixcel/facebook/capi_add_to_cart&quuid=" + global_quuid + "ccc"; 1346 var payload = JSON.stringify(gecommProductToCart); 1347 var sent = false; 1348 1349 if (typeof navigator !== "undefined" && typeof navigator.sendBeacon === "function") { 1350 try { 1351 var blob = new Blob([payload], { type: "text/plain" }); 1352 sent = navigator.sendBeacon(url, blob); 1353 } catch (e) { sent = false; } 1354 } 1355 1356 if (!sent && typeof fetch === "function") { 1357 try { 1358 fetch(url, { 1359 method: "POST", 1360 headers: { "Content-Type": "text/plain" }, 1361 body: payload, 1362 keepalive: true, 1363 credentials: "include" 1364 }).catch(function() {}); 1365 } catch (e) {} 1366 } 1367})(); 1368 1369 1370 1371 1372 1373_lt('send', 'cv', { 1374type: 'dpa_cart', 1375itemIds: [gecommProductToCart.product_id.toString()], 1376price: gecommProductToCart.price.toString(), 1377currency: 'TWD', 1378quantity: gecommProductToCart.quantity.toString() 1379}, 1380{dpa:true}, 1381['ca1644dc-2795-476b-9ffa-e1550d80f920'']); 1382 1383_lt('send', 'cv', { 1384 type: 'AddToCart' 1385},['ca1644dc-2795-476b-9ffa-e1550d80f920'']); 1386 1387 1388 1389 1390 } catch (e) { } 1391 1392 } 1393 1394 $('[data-toggle="tooltip"], .tooltip').tooltip("hide"); 1395 1396 promotion_id = typeof(promotion_id) != 'undefined' ? promotion_id : -1; 1397 free_present_id = typeof(free_present_id) != 'undefined' ? free_present_id : -1; 1398 1399 if(free_present_id != "-1"){ 1400 quantity = $('input[name="quantity"]').val(); 1401 quantity = typeof(quantity) != 'undefined' ? quantity : 1; 1402 } 1403 1404 var price = $('#price-price-block .price-normal').attr('data-content'); 1405 1406 if(typeof(price) === 'undefined') price = $('#price-price-block .price-new').attr('data-content'); 1407 1408 price = typeof(price) != 'undefined' ? price : 0; 1409 1410 var instantCartSrc = 'https://www.tworoad.tw/index.php?route=product/instant_add&product_id=' + product_id + '&promotion_id=' + promotion_id + '&quantity=' + quantity +'&price=' + price + '&free_present_id=' + free_present_id; 1411 1412 whenFancyboxReady(function(){ 1413 try { 1414 $.fancybox.open({ 1415 src : instantCartSrc, 1416 type : 'iframe', 1417 opts : { 1418 openEffect : 'none', 1419 closeEffect : 'none', 1420 closeClickOutside : true, 1421 iframe : { css : { "max-width" : '332px', "width:": '100%' } }, 1422 beforeLoad: function() { 1423 $(".fancybox-container").css("zIndex", 999999993); 1424 } 1425 } 1426 }); 1427 } catch (e) { } 1428 }); 1429 } 1430 1431 function InstantAddToCart1(product_id, quantity, key_id, type, position){ 1432 1433 product_id = (typeof product_id !== 'undefined') ? product_id : 0; 1434 quantity = (typeof quantity !== 'undefined') ? quantity : 1; 1435 key_id = (typeof key_id !== 'undefined') ? key_id : "-1"; 1436 type = (typeof type !== 'undefined') ? type : ""; 1437 position = (typeof position !== 'undefined') ? position : ""; 1438 1439 if( product_id && quantity ) { 1440 1441 gecommProductToCart.product_id = product_id; 1442 gecommProductToCart.quantity = quantity; 1443 1444 try { 1445 1446 var p_name = $("[data-producttlid='"+product_id+"'] .name [itemprop='name']").html(); 1447 var p_prices = $("[data-producttlid='"+product_id+"'] .price[data-price]").data("price"); 1448 gecommProductToCart.product_name = p_name; 1449 1450 gecommProductToCart.price = p_prices; 1451 1452 // UA 1453 dataLayer.push({ 1454 'event': 'addToCart', 1455 'ecommerce': { 1456 'currencyCode': '', 1457 'add': { 1458 'products': [{ 1459 'name': p_name, 1460 'id': product_id, 1461 'price': p_prices, 1462 'quantity': quantity 1463 }] 1464 } 1465 } 1466 }); 1467 1468 // GA4 1469 dataLayer.push({ 1470 'event': 'add_to_cart', 1471 'ecommerce': { 1472 'items': [{ 1473 'item_name': p_name, 1474 'item_id': product_id, 1475 'price': p_prices, 1476 'quantity': quantity 1477 }] 1478 } 1479 }); 1480 1481 global_quuid = QUUID(); 1482 var item_p_prices = parseFloat(p_prices); 1483 item_p_prices = Number(item_p_prices); 1484 if( isNaN(item_p_prices) ) { 1485 item_p_prices = 0; 1486 } 1487 fbq('track', 'AddToCart', { 1488 content_name: p_name, 1489 value: item_p_prices, 1490 currency: 'TWD' 1491 }, {eventID: global_quuid + "ccc"}); 1492 1493
1494try { setCookie("qdmfbevent_id", global_quuid + "ccc", 5); } catch (error) { } 1495 1496(function() { 1497 // CAPI AJAX must survive navigation (cart/add â instant_checkout redirect 1s window). 1498 // Prefer navigator.sendBeacon (designed for unload-time delivery); fallback to fetch keepalive. 1499 var url = "https://www.tworoad.tw/index.php?route=pixcel/facebook/capi_add_to_cart&quuid=" + global_quuid + "ccc"; 1500 var payload = JSON.stringify(gecommProductToCart); 1501 var sent = false; 1502 1503 if (typeof navigator !== "undefined" && typeof navigator.sendBeacon === "function") { 1504 try { 1505 var blob = new Blob([payload], { type: "text/plain" }); 1506 sent = navigator.sendBeacon(url, blob); 1507 } catch (e) { sent = false; } 1508 } 1509 1510 if (!sent && typeof fetch === "function") { 1511 try { 1512 fetch(url, { 1513 method: "POST", 1514 headers: { "Content-Type": "text/plain" }, 1515 body: payload, 1516 keepalive: true, 1517 credentials: "include" 1518 }).catch(function() {}); 1519 } catch (e) {} 1520 } 1521})(); 1522 1523 1524 1525 1526_lt('send', 'cv', { 1527type: 'dpa_cart', 1528itemIds: [gecommProductToCart.product_id.toString()], 1529price: gecommProductToCart.price.toString(), 1530currency: 'TWD', 1531quantity: gecommProductToCart.quantity.toString() 1532}, 1533{dpa:true}, 1534['ca1644dc-2795-476b-9ffa-e1550d80f920'']); 1535 1536_lt('send', 'cv', { 1537 type: 'AddToCart' 1538},['ca1644dc-2795-476b-9ffa-e1550d80f920'']); 1539 1540 1541 1542 1543 } catch (e) { } 1544 1545 } 1546 1547 $('[data-toggle="tooltip"], .tooltip').tooltip("hide"); 1548 1549 if(type == "promotion"){ 1550 var promotion_id = typeof(key_id) != 'undefined' ? key_id : -1; 1551 var send_value = '&promotion_id=' + promotion_id ; 1552 } 1553 1554 if(type == "present"){ 1555 var free_present_id = typeof(key_id) != 'undefined' ? key_id : -1; 1556 1557 //if(free_present_id > 0){ 1558 quantity = $('input[name="quantity"]').val(); 1559 quantity = typeof(quantity) != 'undefined' ? quantity : 1; 1560 //} 1561 1562 var send_value = '&free_present_id=' + free_present_id +'&position=' + position; 1563 } 1564 1565 if(type == "buytogether"){ 1566 var buy_together_id = typeof(key_id) != 'undefined' ? key_id : -1; 1567 1568 quantity = $('input[name="quantity"]').val(); 1569 quantity = typeof(quantity) != 'undefined' ? quantity : 1; 1570 1571 var send_value = '&buy_together_id=' + buy_together_id +'&position=' + position; 1572 } 1573 1574 var price = $('#price-price-block .price-normal').attr('data-content'); 1575 1576 if(typeof(price) === 'undefined') price = $('#price-price-block .price-new').attr('data-content'); 1577 1578 price = typeof(price) != 'undefined' ? price : 0; 1579 1580 1581 var instantCart1Src = 'index.php?route=product/instant_add&product_id=' + product_id + '&quantity=' + quantity +'&price=' + price +send_value ; 1582 1583 whenFancyboxReady(function(){ 1584 try { 1585 $.fancybox.open({ 1586 src : instantCart1Src, 1587 type : 'iframe', 1588 opts : { 1589 closeClickOutside : true, 1590 iframe : { css : { width : '320px' } }, 1591 beforeLoad: function() { 1592 $(".fancybox-container").css("zIndex", 999999993); 1593 } 1594 } 1595 }); 1596 } catch (e) { } 1597 }); 1598 } 1599 1600 // Debounced mini-cart reload: every module/cart hit rewrites server-side 1601 // cart state, so a burst of reloads can undo a just-added product. 1602 // Keep in sync with common/footer_cart.tpl -- only one footer renders per page 1603 // (common/footer.php picks a single template), so the two copies never collide. 1604 var miniCartReloadTimer = null; 1605 function reloadMiniCart(immediate){ 1606 // One shared timer for every caller; immediate only shortens the wait. 1607 // Bypassing it made add-to-cart fire two overlapping module/cart requests 1608 // (closePopFancybox() and TriggerMyCartList() each trigger mouseover). 1609 // Rescheduling is not a lock, so this is "almost always one", not a guarantee. 1610 clearTimeout(miniCartReloadTimer); 1611 miniCartReloadTimer = setTimeout(loadMiniCart, immediate ? 0 : 300); 1612 } 1613 1614 function loadMiniCart(){ 1615 $("#cart").load("index.php?route=module/cart #cart > *", function(){ 1616 try { refreshMiniCartScrollBar(); } catch (e) { } 1617 }); 1618 } 1619 1620 function closePopFancybox(){
1621 try { 1622 $.fancybox.close(); 1623 $.fancybox.destroy(); 1624 } catch (e) { } 1625 if( is.desktop() ) { 1626 setTimeout(function(){ 1627 $("#cart > .heading a").trigger('mouseover'); 1628 setTimeout(function(){ refreshMiniCartScrollBar(); }, 300); 1629 }, 500); 1630 } 1631 } 1632 1633 function LastPresentsOption(html,key,qty){ 1634 $("#lg_option_"+key).prepend(html); 1635 $('.last_free_presents').trigger('change'); 1636 $('.free_present_qty').trigger('change'); 1637 } 1638 1639 function TriggerMyCartList(){ 1640 if( is.not.desktop() ){ 1641 updateCartProductCount(); 1642 setTimeout(function(){ 1643 $("#shopping-cart-list .badge").removeClass("animated"); 1644 $("#shopping-cart-list .badge").addClass("animated"); 1645 $("#shopping-cart-list .badge").addClass("bounce"); 1646 }, 800); 1647 } else { 1648 setTimeout(function(){ 1649 $("#cart > .heading a").trigger('mouseover'); 1650 setTimeout(function(){ refreshMiniCartScrollBar(); }, 300); 1651 }, 500); 1652 } 1653 } 1654 1655 function removeCartByProductID(product_id) { 1656 if( is.existy(product_id) ) { 1657 $.ajax({ 1658 url: 'index.php?route=module/cart&remove=' + product_id + "%3Anull%3A-1%3A0", 1659 type: 'post', 1660 dataType: 'json', 1661 success: function(json) { 1662 TriggerMyCartList(); 1663 } 1664 }); 1665 } 1666 } 1667 1668 function updateQuantityByProductID(product_id, quantity) { 1669 quantity = typeof(quantity) != 'undefined' ? quantity : 1; 1670 $.ajax({ 1671 url: 'index.php?route=checkout/cart/updateProductQuantity', 1672 type: 'post', 1673 data: { 'quantity':quantity, 'key': product_id+'%3Anull%3A-1%3A0' }, 1674 dataType: 'json', 1675 success: function(json) { 1676 TriggerMyCartList(); 1677 } 1678 }); 1679 } 1680 1681 1682 function bulk_add_to_cart() { 1683 $("select.bulk-add-quantity").change(function() { 1684 var value = $("option:selected", this).val(); 1685 var select_idx = $(this).data("idx"); 1686 var product_id = $(this).data("productid"); 1687 var prevval = $(this).data("prevval"); 1688 1689 if( value == 0 ) { 1690 $(this).next(".bulk-add-quantity").addClass("no-cart"); 1691 if(prevval!=0){ 1692 removeCartByProductID(product_id); 1693 } 1694 } else { 1695 $(this).next(".bulk-add-quantity").removeClass("no-cart"); 1696 1697 if( value == 999 ) { 1698 InstantAddToCart(product_id, 999); 1699 $(this).next(".bulk-add-quantity").find(".current").text("+ 9"); 1700 } else { 1701 if(prevval==0){ 1702 // ç¬¬ä¸æ¬¡å å ¥ 1703 InstantAddToCart(product_id, value); 1704 } else { 1705 // æ´æ°æ¸é 1706 updateQuantityByProductID(product_id, value); 1707 } 1708 } 1709 } 1710 $(this).data("prevval", value); 1711 $(this).attr("data-prevval", value); 1712 }); 1713 } 1714 1715 function downloadJSAtOnload() { 1716 1717 $("#myBody").removeAttr('style'); 1718 1719 if( is.not.desktop() ) { 1720 $('.any-products').each(function(index,el){ 1721 $(el).find('.grid-box').each(function(index,el2){ 1722 $(el2).attr('style',''); 1723 }); 1724 }); 1725 } 1726 1727 try { 1728 getScript("https://cdnjs.cloudflare.com/ajax/libs/izitoast/1.4.0/js/iziToast.min.js",function(){ }); 1729 } catch(e) { } 1730 1731 1732 var queue = $LAB.queueScript("https://cdn.qdm.cloud/assets/js/core.240901.compressed.js"); 1733 queue.queueWait(function(){ 1734 1735 // core.js reloads module/cart on EVERY mini-cart hover, unthrottled (10 1736 // requests in 5s observed). Rebind to the debounced reload, keeping 1737 // hover-to-expand behaviour. The mouseleave rebind is like-for-like: in 1738 // core.240901 (the bundle queued above) its body is only 1739 // removeClass("active"). Re-check if that bundle is rebuilt. 1740 // Keep in sync with common/footer_cart.tpl -- it queues a different 1741 // bundle, so verify that claim against ITS bundle. 1742 // 1743 // The ready() wrapper is load-bearing: core.js binds inside its own 1744 // ready() callback, registered while this queued script runs, and jQuery 1745 // fires ready callbacks in registration order -- so off() is guaranteed to 1746 // run after that bind. Calling off() directly here only works if DOM ready 1747 // happens to have fired already; otherwise it removes nothing and BOTH 1748 // handlers stay attached.
1749 $(document).ready(function(){ 1750 try { 1751 $(document).off("mouseover", "#cart > .heading"); 1752 $(document).on("mouseover", "#cart > .heading", function(e){ 1753 $("#cart").addClass("active"); 1754 // Programmatic refreshes get here via .trigger('mouseover') (add-to-cart / 1755 // fancybox close / login). Debouncing them delayed the reload past each 1756 // call site's paired setTimeout(refreshMiniCartScrollBar, 300). jQuery 1757 // marks synthetic events with isTrigger; losing that just falls back to 1758 // the debounced path. 1759 reloadMiniCart(e && e.isTrigger); 1760 }); 1761 $(document).off("mouseleave", "#cart"); 1762 $(document).on("mouseleave", "#cart", function(){ 1763 $(this).removeClass("active"); 1764 }); 1765 } catch (e) { 1766 // Never break the rest of the queued callback, but do not fail 1767 // silently either -- a swallowed error degrades straight back to 1768 // the unthrottled reload. 1769 if (window.console && console.warn) { console.warn("mini-cart rebind failed", e); } 1770 } 1771 1772 // Self-check. off(type, selector) matches on the selector STRING, so a whitespace 1773 // variant alone breaks it: a rebuilt bundle emitting "#cart>.heading" survives our 1774 // off() and BOTH handlers stay attached. Both spellings hit the same element, so 1775 // compare with whitespace stripped -- that covers drift on either side. 1776 // Known limit: whitespace is the ONLY rewrite covered. "#cart .heading", a trailing 1777 // " a", a comma-separated selector or a direct element bind all stay silent. 1778 // A tripwire for the likely case, not proof that the rebind held. 1779 // _data is a jQuery internal, so it gets its own try/catch: if it ever goes away, 1780 // the rebind above is still correct and must not be reported failed. 1781 try { 1782 var miniCartEvents = $._data(document, "events"); 1783 var miniCartBound = ((miniCartEvents && miniCartEvents.mouseover) || []).filter(function(h){ 1784 return h.selector && h.selector.replace(/\s+/g, "") === "#cart>.heading"; 1785 }).length; 1786 if (miniCartBound !== 1 && window.console && console.warn) { 1787 console.warn("mini-cart rebind: expected 1 mouseover handler, found", miniCartBound); 1788 } 1789 } catch (e2) { 1790 if (window.console && console.warn) { console.warn("mini-cart rebind self-check unavailable", e2); } 1791 } 1792 }); 1793 1794 1795 1796 $(".ajax-popup-link").unbind(); 1797 $(".ajax-popup-link").fancybox({ 1798 closeBtn : true, 1799 closeClick : true, 1800 helpers : { 1801 overlay : {closeClick: true} 1802 }, 1803 buttons : [ 'close' ], 1804 clickOutside : 'close', 1805 closeClick : true, 1806 toolbar : true 1807 }); 1808 1809 1810 var milliseconds = new Date().getTime(); 1811 $.getJSON( "index.php?route=common/header/getLoggedInUserInfo&token=" + milliseconds + "1" + (Math.floor(Math.random() * 999) + 100), function( data ) { 1812 if( is.existy(data) && data.isLogged ) { 1813 $("#header-logged-user").html(data.logged_user_name + data.logged_group_name); 1814 $("#header-mobile-user").html(data.logged_user_name + data.logged_group_name); 1815 $(".header-logged-menu").removeClass("hidden"); 1816 $("#header-logged-menu").removeClass("hidden"); 1817 $("#header-none-logged-menu").remove(); 1818 } else { 1819 $(".header-logged-menu").remove(); 1820 $("#header-logged-menu").remove(); 1821 $(".header-none-logged-menu").removeClass("hidden"); 1822 $("#header-none-logged-menu").removeClass("hidden"); 1823 } 1824 1825 if( is.not.desktop() ){ 1826 updateCartProductCount(); 1827 setTimeout(function(){ 1828 $("#shopping-cart-list .badge").removeClass("animated"); 1829 $("#shopping-cart-list .badge").addClass("animated"); 1830 $("#shopping-cart-list .badge").addClass("bounce"); 1831 }, 800); 1832 } else { 1833 $("#cart > .heading a").trigger('mouseover'); 1834 $("section#cart").removeClass("active"); 1835 setTimeout(function(){ $("section#cart").removeClass("active"); }, 50); 1836 } 1837 1838 }); 1839 1840 setTimeout(function(){ 1841 $('.side_float_banner_wrapper').attr("style",""); 1842 $('.banner').each(function( index ) { 1843 if( $(this).find("a").length == 1 ) { 1844 $(this).attr("style",""); 1845 } 1846 }); 1847 }, 2000); 1848 1849 if (typeof init_inline === 'function') { 1850 if($("#image-additional").length){ 1851 $.fancybox.defaults.hash = false;
1852 } 1853 setTimeout(function(){ init_inline(); }, 300); 1854 } 1855 1856 if (typeof init_fullslideshow === 'function') { init_fullslideshow(); } 1857 1858 $("#contact-block").removeAttr('style'); 1859 1860 if( is.not.desktop() ) { 1861 $('#shopping-cart-list').on('click', function() { 1862 openSideCart(); 1863 return false; 1864 }); 1865 } 1866 1867 if ( $("input[name='quantity']").length > 0 ) { 1868 var qtyMin = $("input[name='quantity']").data("min"); 1869 if(qtyMin=="" || qtyMin==undefined) qtyMin = 1; 1870 $("input[name='quantity']").TouchSpin({ 1871 min: qtyMin, 1872 max: 99999 1873 }); 1874 } 1875 1876 $(window).resize(function() { 1877 if( $(window).width() < 992 ){ 1878 $("#footer-inner-row").removeClass("offset2"); 1879 } else { 1880 var data_count = $("#footer-inner-row").data("count"); 1881 if(data_count < 1) { 1882 $("#footer-inner-row").addClass("offset2"); 1883 } 1884 } 1885 }); 1886 1887 $("#header .flipper").each(function(){ 1888 var imgLoad = $(this).imagesLoaded(function(){ 1889 try { 1890 if (typeof $(this).data('flipper') !== 'undefined') { 1891 $(this).flipper(); 1892 } 1893 } catch(err) { } 1894 }); 1895 }); 1896 1897 $('a[href*="#"]').each(function() { 1898 var hash = $(this).attr('href'); 1899 if(hash=="##") return; 1900 if(hash=="#") return; 1901 if(hash=="#mobile-menu") return; 1902 $(this).click( function(e) { 1903 var url = $(this).attr('href'); 1904 var type = url.split('#'); 1905 var hash = ''; 1906 if(type.length > 1) 1907 hash = type[1]; 1908 if($("[name='"+hash+"']").length){ 1909 if(hash && hash != "undefined" && hash != null && hash != undefined){ 1910 e.preventDefault(); 1911 $('html,body').animate({ scrollTop: $("[name='"+hash+"']").offset().top}, 600); 1912 return false; 1913 } 1914 } 1915 }); 1916 }); 1917 1918 1919 1920 1921 1922 if ( $(".masonry").length > 0 ) { 1923 $(".masonry").each(function(index, value) { 1924 var $grid = $('.masonry').masonry(); 1925 setTimeout(function(){ $grid.masonry('layout'); }, 2000); 1926 }); 1927 } 1928 1929 if ( $(".owl-carousel").length > 0 ) { 1930 $(".owl-carousel").not('[data-exclude]').each(function(index, value) { 1931 1932 var autoplay = is.null( $(this).attr('data-autoPlay') ) ? true : $(this).attr('data-autoPlay'); 1933 var pagination = is.null( $(this).attr('data-pagination') ) ? false : $(this).attr('data-pagination'); 1934 var slideSpeed = is.null( $(this).attr('data-slideSpeed') ) ? 200 : $(this).attr('data-slideSpeed'); 1935 var paginationSpeed = is.null( $(this).attr('data-paginationSpeed') ) ? 800 : $(this).attr('data-paginationSpeed'); 1936 var singleItem = is.null( $(this).attr('data-singleItem') ) ? true : $(this).attr('data-singleItem'); 1937 var transitionStyle = is.null( $(this).attr('data-transitionStyle') ) ? "fade" : $(this).attr('data-transitionStyle'); 1938 1939 $(this).owlCarousel({ 1940 autoPlay : Boolean(autoplay), 1941 navigation : false, 1942 pagination : Boolean(pagination), 1943 slideSpeed : slideSpeed, 1944 paginationSpeed : paginationSpeed, 1945 singleItem: Boolean(singleItem), 1946 transitionStyle : transitionStyle, 1947 stopOnHover: true, 1948 autoHeight: true 1949 }); 1950 1951 }); 1952 } 1953 1954 1955 var vidDefer = document.getElementsByTagName('iframe'); 1956 for (var i=0; i<vidDefer.length; i++) { 1957 if(vidDefer[i].getAttribute('data-src')) { 1958 vidDefer[i].setAttribute('src',vidDefer[i].getAttribute('data-src')); 1959 } 1960 } 1961 1962 $(".fancybox").fancybox({ 1963 closeBtn: false, 1964 padding : 1, 1965 helpers : { 1966 overlay : { 1967 closeClick : true, 1968 speedOut : 200, 1969 showEarly : true, 1970 css : {}, 1971 locked : true 1972 }, 1973 title : { type : 'inside' }, 1974 buttons : {} 1975 } 1976 }); 1977 1978 1979 if( is.not.desktop() ){ 1980 $("#footer-inner-row").removeClass("offset2"); 1981 } 1982 1983 if ( $('#bestseller-products .flexslider').length > 0 ) { 1984 $('#bestseller-products .flexslider').each(function(index, value) { 1985 $(this).flexslider({ 1986 animation: "slide", 1987 animationLoop: true, 1988 itemWidth: 182, 1989 itemMargin: 3, 1990 minItems: 2, 1991 maxItems: 6, 1992 animationSpeed: 700, 1993 touch: true, 1994 slideshow: false, slideshowSpeed: 5000 }); 1995 }); 1996 } 1997 if ( $('#featured-products .flexslider').length > 0 ) { 1998 $('#featured-products .flexslider').each(function(index, value) { 1999 $(this).flexslider({ 2000 animation: "slide", 2001 animationLoop: true, 2002 itemWidth: 182, 2003 itemMargin: 3, 2004 minItems: 2, 2005 maxItems: 6, 2006 animationSpeed: 700, 2007 touch: true, 2008 slideshow: false, slideshowSpeed: 5000 }); 2009 }); 2010 } 2011 if ( $('#latest-products .flexslider').length > 0 ) { 2012 $('#latest-products .flexslider').each(function(index, value) { 2013 $(this).flexslider({ 2014 animation: "slide", 2015 animationLoop: true, 2016 itemWidth: 182, 2017 itemMargin: 3, 2018 minItems: 2, 2019 maxItems: 6, 2020 animationSpeed: 700, 2021 touch: true, 2022 slideshow: false, slideshowSpeed: 5000 }); 2023 }); 2024 } 2025 if ( $('#related-products .flexslider').length > 0 ) { 2026 $('#related-products .flexslider').each(function(index, value) { 2027 $(this).flexslider({ 2028 animation: "slide", 2029 animationLoop: true, 2030 itemWidth: 182, 2031 itemMargin: 3, 2032 minItems: 2, 2033 maxItems: 6, 2034 animationSpeed: 700, 2035 touch: true, 2036 slideshow: false, slideshowSpeed: 5000 }); 2037 }); 2038 } 2039 if ( $('#special-products .flexslider').length > 0 ) { 2040 $('#special-products .flexslider').each(function(index, value) { 2041 $(this).flexslider({ 2042 animation: "slide", 2043 animationLoop: true, 2044 itemWidth: 182, 2045 itemMargin: 3, 2046 minItems: 2, 2047 maxItems: 6, 2048 animationSpeed: 700, 2049 touch: true, 2050 slideshow: false, slideshowSpeed: 5000 }); 2051 }); 2052 } 2053 2054 if ( $('#comingsoon-products .flexslider').length > 0 ) { 2055 $('#comingsoon-products .flexslider').each(function(index, value) { 2056 $(this).flexslider({ 2057 animation: "slide", 2058 animationLoop: true, 2059 itemWidth: 182, 2060 itemMargin: 3, 2061 minItems: 2, 2062 maxItems: 6, 2063 animationSpeed: 700, 2064 touch: true, 2065 slideshow: false, slideshowSpeed: 5000 }); 2066 }); 2067 } 2068 2069 jQuery('.flexslider').each( function() { 2070 var $slider = jQuery(this); 2071 var $slides = jQuery(this).children().children('.slides'); 2072 if ( -1 === jQuery.inArray( $slider.data('flexslider').vars.animation, [ 'slide', 'swing' ] ) ) 2073 return; 2074 $slides.bind( 'mousewheel', function( e ) { 2075 e.preventDefault(); 2076 if ( jQuery(this).hasClass('dragging') ) 2077 return; 2078 if ( e.originalEvent.deltaY > 0 ) { 2079 $slider.flexslider('next'); 2080 } 2081 if ( e.originalEvent.deltaY < 0 ) { 2082 $slider.flexslider('prev'); 2083 } 2084 return false;
2085 } ); 2086 } ); 2087 2088 if ( $('.any-products').length > 0 ) { 2089 $(window).resize(function() { 2090 2091 $('.any-products').each(function(index, value) { 2092 var margin_vertical = $(this).data("marginVertical"); 2093 if( is.mobile() ){ 2094 $(this).find(".products-box").removeClass(".products-box").addClass("product-box"); 2095 } else { 2096 if(margin_vertical){ 2097 $(this).find(".product-box").removeClass(".product-box").addClass("products-box"); 2098 } 2099 } 2100 }); 2101 2102 if(is.mobile()){ 2103 $(".any-products").find(".grid-box").attr("style",""); 2104 adjustBoxHeights(); 2105 } 2106 2107 }); 2108 } 2109 2110 if ( $('.banner-carousel').length > 0 ) { 2111 $('.banner-carousel').each(function(index, value) { 2112 var slideSpeed = is.null( $(this).attr('data-slideSpeed') ) ? 600 : $(this).attr('data-slideSpeed'); 2113 if( slideSpeed == undefined ) { slideSpeed = 600; } 2114 var el = "#" + $(this).attr("id"); 2115 var items = $(this).data("item"); 2116 2117 var lilen = $(el+" li").length; 2118 var sliderLoop = true; 2119 if(lilen==items){sliderLoop = false;} 2120 2121 var autoplay = parseInt($(this).data("autoplay")); 2122 var boolAutoplay = false; 2123 if( autoplay ) boolAutoplay = true; 2124 $(el).removeClass("hidden"); 2125 $(el).show(); 2126 $(el).imagesLoaded( function() { 2127 var el = "#" + $(this).attr("id"); 2128 $(el+" img[data-lazy-src]").each(function(index, value) { 2129 var loadimg = $(this).attr('data-lazy-src'); 2130 $(this).attr('src', loadimg); 2131 }); 2132 var slider = $(el).lightSlider({ 2133 auto: boolAutoplay, 2134 pauseOnHover: true, 2135 pager: false, 2136 item:items, 2137 loop: sliderLoop, 2138 easing: 'cubic-bezier(0.25, 0, 0.25, 1)', 2139 speed: slideSpeed, 2140 onSliderLoad: function() { 2141 $(el).removeClass("hidden"); 2142 $(el).show(); 2143 $(el).css("height", "auto"); 2144 } 2145 }); 2146 slider.refresh(); 2147 }); 2148 }); 2149 } 2150 2151 2152 if ( $('.slideshow-container-appear li').length > 0 ) { 2153 $('.slideshow-container-appear').each(function(index, value) { 2154 var el = "#" + $(this).attr("id"); 2155 var full = $(this).data("full"); 2156 if(full){ 2157 $(this).appendTo('#content-top'); 2158 } 2159 2160 if(is.mobile()){ 2161 $(el).find("li.desktop").remove(); 2162 $(el).find("li.mobile:first").show(); 2163 } else { 2164 $(el).find("li.mobile").remove(); 2165 $(el).find("li.desktop:first").show(); 2166 } 2167 2168 $(el).imagesLoaded( function(e) { 2169 2170 if(is.mobile()){ 2171 $(e).closest("li.mobile").attr("style","width:100%"); 2172 } else { 2173 $(e).closest("li.desktop").attr("style","width:100%"); 2174 } 2175 2176 var controlNav = $(e).closest(".slideshow-container-appear").data("controlnav"); 2177 var directionNav = $(e).closest(".slideshow-container-appear").data("directionnav"); 2178 var el = "#" + $(e).attr("id"); 2179 var delay = $(e).closest(".slideshow-container-appear").data("delay"); 2180 if(delay<300) delay = 300; 2181 2182 adaptiveHeight = true; 2183 if( is.mobile() ){ 2184 //controlNav = false; 2185 //directionNav = false;
2186 adaptiveHeight = false; 2187 } 2188 2189 var slideshow_img_h = 0; 2190 $(e).closest(".slideshow-container-appear li.mobile img").each(function(index, value) { 2191 var img_h = $(this).data("height"); 2192 if( (img_h > 0) && (slideshow_img_h > 0) && (img_h != slideshow_img_h) ) { 2193 slideshow_img_h = 0; 2194 } else { 2195 slideshow_img_h = img_h; 2196 } 2197 }); 2198 2199 if( is.mobile() && slideshow_img_h == 0 ){ 2200 $(e).closest(".slideshow-container-appear").flexslider({ 2201 animation: "fade", 2202 slideDirection: "horizontal", 2203 animationLoop: true, 2204 pauseOnHover: true, 2205 pauseOnAction: false, 2206 smoothHeight: false, 2207 slideshowSpeed: delay, 2208 initDelay: 0, 2209 slideshow: true, 2210 mousewheel: false, 2211 controlNav: controlNav, 2212 directionNav: directionNav, 2213 prevText: "", 2214 nextText: "", 2215 start: function(slider) { 2216 var el = "#" + $(this).attr("id"); 2217 $(el).removeClass('loading'); 2218 } 2219 }); 2220 } else { 2221 var slider = $(e).closest(".slides").lightSlider({ 2222 auto:true, 2223 loop:true, 2224 pauseOnHover:true, 2225 adaptiveHeight:true, 2226 item:1, 2227 slideMargin:0, 2228 easing: 'cubic-bezier(0.25, 0, 0.25, 1)', 2229 speed:600, 2230 pause:delay, 2231 controls:directionNav, 2232 pager:controlNav 2233 }); 2234 slider.refresh(); 2235 setTimeout(function(){ 2236 slider.play(); 2237 slider.goToNextSlide(); 2238 slider.goToPrevSlide(); 2239 slider.goToPrevSlide(); 2240 slider.refresh(); 2241 }, 700); 2242 } 2243 2244 }); 2245 2246 }); 2247 } 2248 2249 if( $('.side_float_banner .flipper').length > 0 ) { 2250 try { 2251 $('.side_float_banner .flipper').flipper(); 2252 } catch(err) { } 2253 } 2254 2255 if( $(".flexslider").find("img").length > 0 ) { 2256 $(".flexslider").find("img").trigger('appear'); 2257 } 2258 2259 2260 2261 $('[data-toggle="tooltip"]').tooltip(); 2262 2263 setTimeout(function(){ 2264 $(window).trigger('resize'); 2265 }, 300); 2266 2267 $(".flex-direction-nav").remove(); 2268 2269 adjustBoxHeights(); 2270 2271 2272 $("#menu-btn").show(); 2273 $("#menu-btn").addClass('animated flash'); 2274 2275 setTimeout(function(){ 2276 $("#mobile-navbar").removeAttr('style'); 2277 }, 1000); 2278 2279 2280 2281 2282 }); 2283 2284 queue.runQueue(); 2285 2286 (function(d, s, id) { 2287 var js, fjs = d.getElementsByTagName(s)[0]; 2288 if (d.getElementById(id)) return; 2289 js = d.createElement(s); js.id = id; 2290 js.src = "https://connect.facebook.net/zh_TW/sdk.js"; 2291 fjs.parentNode.insertBefore(js, fjs); 2292 }(document, 'script', 'facebook-jssdk')); 2293 2294 if (window.location.hash == '#_=_') { 2295 window.location.hash = ''; // for older browsers, leaves a # behind 2296 history.pushState('', document.title, window.location.pathname + window.location.search); 2297 } 2298 2299 } 2300 // Store subdomains count as same site; separate tenants on the platform domain do not 2301 function qdmIsSameSiteHost(host){ 2302 var site = location.hostname.toLowerCase(); 2303 host = (host || '').toLowerCase(); 2304 if (host === site) { 2305 return true; 2306 } 2307 // Keep in sync with Response::isSameSiteHref() in system/library/response.php 2308 if (/(^|\.)(qdm\.(tw|com\.tw|cloud)|myorganic\.org\.tw)$/.test(site)) { 2309 return false; 2310 } 2311 var apex = site.replace(/^www\./, ''); 2312 return host === apex || host.slice(-(apex.length + 1)) === '.' + apex; 2313 } 2314 function sanitizeTargetBlank(){ 2315 $('a[rel~=external]').prop('target', '_blank'); 2316 $('a[target="_blank"]').each(function(){ 2317 var a = $(this); 2318 if(!qdmIsSameSiteHost(this.hostname)){ 2319 var originalRel = (this.rel === undefined) ? '' : this.rel; 2320 var newRel = originalRel.split(" "); 2321 if (originalRel.toLowerCase().indexOf('noopener') === -1){ 2322 newRel.push('noopener'); 2323 } 2324 if (originalRel.toLowerCase().indexOf('noreferrer') === -1){ 2325 newRel.push('noreferrer'); 2326 } 2327 if (originalRel.toLowerCase().indexOf('nofollow') === -1){ 2328 newRel.push('nofollow'); 2329 } 2330 a.attr('rel', newRel.join(" ").trim() ); 2331 } 2332 }); 2333 } 2334 function create_mark(name) { 2335 if (window.performance.mark === undefined) { 2336 console.log("performance.mark Not supported"); 2337 return; 2338 } 2339 window.performance.mark(name); 2340 } 2341 function initCoreJS() { 2342 $LAB.setGlobalDefaults({AlwaysPreserveOrder:true}); 2343 jQuery.ajaxPrefilter(function(s) { 2344 if ( s.crossDomain ) { 2345 s.contents.script = false;
2346 } 2347 }); 2348 $(function() { $('body').removeClass('fade-out'); }); 2349 sanitizeTargetBlank(); 2350 var def_img_idx = 1; 2351 [].forEach.call(document.querySelectorAll('img[data-src]'), function(img) { 2352 if( def_img_idx <= 12 ) { 2353 if (img.getAttribute('data-src') === null) { } else if (img.getAttribute('data-src') === '') {} else { 2354 img.setAttribute('src', img.getAttribute('data-src')); 2355 img.onload = function() { 2356 img.removeAttribute('data-src'); 2357 if (img.style.opacity !== undefined) { 2358 img.style.opacity = 1; 2359 } 2360 }; 2361 } 2362 } 2363 def_img_idx++; 2364 }); 2365 if ( $('.slideshow .flexslider').length > 0 ) { 2366 $('.slideshow .flexslider').each(function(index, value) { 2367 var el = "#" + $(this).attr("id"); 2368 var full = $(this).data("full"); 2369 if(full){ 2370 $(this).find("img").css({'width' : '100%', 'height' : 'auto' }); 2371 $(this).closest("div.slideshow").appendTo('#content-top'); 2372 } 2373 }); 2374 } 2375 $LAB.script("https://cdnjs.cloudflare.com/ajax/libs/jquery.imagesloaded/5.0.0/imagesloaded.pkgd.min.js") 2376 .script("https://cdnjs.cloudflare.com/ajax/libs/is_js/0.9.0/is.min.js").wait(function(){ 2377 initDeferImages(); 2378 loadJS(); 2379 downloadJSAtOnload(); 2380 create_mark('mark_fully_loaded'); 2381 if( $('.wow').eq(0).length ) { 2382 getScript("https://cdnjs.cloudflare.com/ajax/libs/wow/1.1.2/wow.min.js",function(){ 2383 new WOW().init(); 2384 }); 2385 } 2386 if( $('img[usemap]').eq(0).length ) { 2387 getScript("https://cdnjs.cloudflare.com/ajax/libs/jQuery-rwdImageMaps/1.6/jquery.rwdImageMaps.min.js",function(){ 2388 try { $('img[usemap]').rwdImageMaps(); } catch (e) { } 2389 }); 2390 } 2391 getScript("https://cdnjs.cloudflare.com/ajax/libs/data-layer-helper/0.1.0/data-layer-helper.min.js",function(){ }); 2392 2393 }); 2394 //230117 fix flipper hover 2395 if($(".grid-box, .product-row").find(".flipper").length){ 2396 $(".grid-box, .product-row").find(".flipper").hover(function(){ 2397 oldSrc = $(this).attr("src"); 2398 $(this).attr("src",$(this).attr("data-flipper")); 2399 },function(){ 2400 $(this).attr("src",oldSrc); 2401 }); 2402 } 2403 } 2404 2405 initCoreCSS(); 2406 setTimeout(function(){ 2407 initCoreJS(); 2408 $.getJSON( "index.php?route=account/account/get_user_track&token=" + (Math.floor(Math.random() * 999) + 100), function( data ) { 2409 if( data.user_id ) { ga_userId = data.user_id; } 2410 if( data.uuid ) { 2411 try { 2412 if ('localStorage' in window && window['localStorage'] !== null){ 2413 localStorage.removeItem("qdm_user_uuid"); 2414 localStorage.setItem("qdm_user_uuid", data.uuid); 2415 qdm_user_uuid = data.uuid; 2416 } 2417 } catch (e) {} 2418 } 2419 if( data.utm_source == "affiliates" ) { ga_utm_source = data.utm_source; } 2420 reportFbqTrack(); 2421 2422 }); 2423 var vidDefer = document.getElementsByTagName('iframe'); 2424 for (var i=0; i<vidDefer.length; i++) { 2425 if(vidDefer[i].getAttribute('src')) { 2426 vidDefer[i].setAttribute('data-src',vidDefer[i].getAttribute('src')); 2427 } 2428 } 2429 document.getElementsByTagName("body")[0].style.display = "block"; 2430 }, 60); 2431 2432 </script>
2432 </body> </html>
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.