PageSourceSearch

https://www.4manocaffe.com/login

html 4manocaffe.com collected 2026-10-08 23:17:51 UTC 95,259 bytes, 2,154 lines download raw bytes

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>&#9776;</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>&nbsp;<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>&nbsp;我的訂單</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>&nbsp;會員中心&nbsp;(登入)</a></li> <li class="pushy-link header-none-logged-menu hidden"><a href="/guestorder"><i class="fa fa-search-plus" aria-hidden="true"></i>&nbsp;我要查訂單</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>&nbsp;登出</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>&nbsp;
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>&nbsp;<span id="header-logged-user"></span>&nbsp;<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="">線上購物&nbsp;<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		 &gt; 		<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		 &gt; 		<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>&nbsp;</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">我要註冊新會員&nbsp;&nbsp;<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>&nbsp;</p> <p>&nbsp;</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.