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