1<!DOCTYPE html> 2<html lang="zh-TW" style="height:100%;"> 3 <head> 4
4<script> 5 window.dataLayer = window.dataLayer || []; 6 </script>
6 7 <!-- Google Tag Manager --> 8
8<script>
vendor: 375 bytes, lines 8-12
8(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 9 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 10 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 11 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 12 })(window,document,'script','dataLayer','
12GTM-K3TFHTS9
vendor: 3 bytes, line 12
12');
12</script>
12 13 <!-- End Google Tag Manager --> 14 <!-- CYBERBIZ Google Tag Manager --> 15
15<script>
vendor: 345 bytes, lines 15-19
15(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 16 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 17 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 18 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 19 })(window,document,'script','cyb','
19GTM-TXD9LVJ
vendor: 3 bytes, line 19
19');
19</script>
19 20 <!-- End CYBERBIZ Google Tag Manager --> 21 22 <meta charset="utf-8"> 23<meta http-equiv="X-UA-Compatible" content="IE=edge"> 24<meta name="viewport" content="width=device-width, initial-scale=1"> 25<link rel="icon" href="https://cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3NzY2NDc1OTJfNDh4LnBuZy5wbmciXV0.png?convert=false&sha=d4c35b0ae2836bab"> 26<link rel="apple-touch-icon" href="https://cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3NzY2NDc1OTJfNDh4LnBuZy5wbmciXV0.png?convert=false&sha=d4c35b0ae2836bab"> 27 28<meta property="og:site_name" content="SpearX è²ç¹ç§æ" /> 29 30<!-- og tag --> 31 32 33<!-- og image --> 34 35 36 <meta property="og:image" content="https://cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3NzY2NDc2MDFfMzAweC5wbmcucG5nIl1d.png?sha=99db421763a7021d" /> 37 38 39 40<title> 41 42 è³æ©é±éé ä»¶ SpearX è²ç¹ç§æ 43 44</title> 45 46 47 <style> 48 *:not(input):not(textarea) { 49 -webkit-touch-callout:none; 50 -webkit-user-select:none; 51 -khtml-user-select:none; 52 -moz-user-select:none; 53 -ms-user-select:none; 54 user-select:none; 55 } 56 </style> 57 58
58<script> 59 (function () { 60 function stopEvent(event) { 61 event.preventDefault(); 62 event.stopPropagation(); 63 } 64 65 ['dragstart', 'selectstart', 'contextmenu'].forEach(function(event) { 66 document.addEventListener(event, stopEvent); 67 }); 68 } 69 )(); 70 </script>
70 71 72
73<script src='//cdn1.cybassets.com/frontend/shop/useSettingsData-ec858cfa815323bb.js' type='text/javascript'></script>
73 74 75 76 77
77<script> 78 window.setSettingsData({"draggable_sections":{"404":[],"index":["1663586196699","_index_4_blocks","1776649601967_1","1776648973652_2","1776649932736_1","1776649999177_2"],"product":["product_info","product_description","board_comments","related_products"],"collection":[],"category":[],"blog":[],"article":[],"cart":[],"contact":[],"express_delivery":[],"search":[],"combo_product":["combo_product_info","combo_product_desc","board_comments"]},"sections":{"navbar":{"type":"navbar","visible":true,"settings":{"navbar_image_logo_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2OTUyMDEzNThfb3JpLnBuZy5wbmciXV0.png?sha=6f96f2e7021451de","navbar_image_logo_tablet_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2OTUyMDEzNThfb3JpLnBuZy5wbmciXV0.png?sha=6f96f2e7021451de","navbar_image_logo_mobile_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2OTUyMDEzNThfb3JpLnBuZy5wbmciXV0.png?sha=6f96f2e7021451de","main_nav":"main-menu","slider_primary_linklist":"main-menu","slider_primary_linklist_set_open":true,"nav_show_three_dimension":true,"search_enabled":true,"display_only_index":false,"dict_header_banner_image_url":"","dict_header_banner_image_tablet_url":"","dict_header_banner_image_mobile_url":"","dict_header_banner_link":"","display_count_down":false,"navbar_display_style":"displayDefault","navbar_background_transparent":false,"header_banner_start":"","header_banner_end":"2022-09-26 19:06:27 +0800","timer_text_color":"#ffffff","timer_bg_color":"#c58787","menu_display_style":"three_dimension_menu","link_menu_enabled":false,"link_menu":"undefined","display_banner_type":"imageBanner","header_banner_simple_text_size":"12","header_banner_simple_text_color":"#ffffff","header_banner_simple_bg":"#000000","logo_height":"","mobile_logo_position":"left","navbar_pc_title_font_size_scale":"100","navbar_pc_body_font_size_scale":"100","navbar_mobile_title_font_size_scale":"100","navbar_mobile_body_font_size_scale":"100","breadcrumb_referrer_enabled":false},"custom_name":"å°è¦½å"},"footer":{"type":"footer","visible":true,"settings":{"footer_link":"footer","display_facebook":true,"shop_facebook":"https://www.facebook.com/SpearX","display_instagram":true,"shop_instagram":"https://www.instagram.com/SpearX_inc","display_line":true,"shop_line":"https://page.line.me/631cjtot","display_youtube":false,"shop_youtube":"https://www.youtube.com/","footer_link_arrangement":"display_y","display_facebook_fan_block":true},"block_order":["default_link_list","default_contact_info"],"blocks":{"default_link_list":{"type":"link_list_setting","custom_name":"é¸å®","thumbnail":"list","draggable":true,"visible":true,"settings":{"footer_link":"footer","dict_link_list_block_title":"éæ¼æå"}},"default_contact_info":{"type":"contact_info_setting","custom_name":"è¯çµ¡è³è¨","thumbnail":"contactInfo","draggable":true,"visible":true,"settings":{"display_phone":true,"display_fax_number":true,"shop_fax_number":"02-2709-9009","display_shop_email":true,"display_shop_address":true,"display_office_time":true,"shop_office_time":"é±ä¸è³é±äº12:30-19:30 åå®åæ¥å ¬ä¼","dict_contact_info_block_title":"è¯çµ¡è³è¨","dict_phone_number":"02-2709-2299","dict_shop_email":"[email protected]","dict_shop_address":"å°åå¸å¤§å®å建ååè·¯ä¸æ®µ332è"}}},"custom_name":"é è ³"},"_index_product_banner":{"type":"_index_product_banner","visible":true,"settings":{"dict_link":"","dict_image_url":"/theme_src/i18n_walker/default_img/index_product_banner.png","dict_tablet_image_url":"/theme_src/i18n_walker/default_img/index_product_banner_tablet.png","dict_mobile_image_url":"/theme_src/i18n_walker/default_img/index_product_banner_mobile.png","display_cta_btn":true,"cta_btn_display_style":"bottomPosition","cta_btn_text":"SHOP NOW","cta_btn_bg_color":"#ffffff","cta_btn_text_color":"#673131","margin_x":"0","margin_bottom":"8","mobile_margin_x":"0","mobile_margin_bottom":"12"},"custom_name":"æ©«å¹ å»£å"},"_index_8_blocks":{"type":"_index_8_blocks","visible":true,"settings":{"dict_title":"Mens","collection_handle":"under-peace-men","limit":"4","margin_x":"80","margin_bottom":"0","mobile_margin_x":"0","mobile_margin_bottom":"48","product_display":"displayPartial"},"custom_name":"åååé¡"},"_index_4_blocks":{"type":"_index_4_blocks","visible":false,"blocks":{"display_index_4_block_1":{"type":"image","visible":true,"settings":{"title":"","dict_link":"/collections/headphone","dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NjM1ODQ3MDVfaW1nXzE2MzA1NTc3NDRfM2Q3NDZkNDNfM3g0YmxvY2tfMS5qcGcuanBlZyJdXQ.jpeg?sha=8e69859a64a38415","dict_tablet_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NjM1ODQ3MDVfaW1nXzE2MzA1NTc3NDRfM2Q3NDZkNDNfM3g0YmxvY2tfMS5qcGcuanBlZyJdXQ.jpeg?sha=8e69859a64a38415","dict_mobile_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NjM1ODQ3MDVfaW1nXzE2MzA1NTc3NDRfM2Q3NDZkNDNfM3g0YmxvY2tfMS5qcGcuanBlZyJdXQ.jpeg?sha=8e69859a64a38415","block_propotion":"33.3","dict_image_description":""},"custom_name":"åç"},"display_index_4_block_2":{"type":"image","custom_name":"åç","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NjM1ODQ3ODJfaW1nXzE2MzA1NTc3NDRfNzgxM2IyYmZfM3g0YmxvY2tfMi5qcGcuanBlZyJdXQ.jpeg?sha=037632ed087d2eea","dict_tablet_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NjM1ODQ3ODJfaW1nXzE2MzA1NTc3NDRfNzgxM2IyYmZfM3g0YmxvY2tfMi5qcGcuanBlZyJdXQ.jpeg?sha=037632ed087d2eea","dict_mobile_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NjM1ODQ3ODJfaW1nXzE2MzA1NTc3NDRfNzgxM2IyYmZfM3g0YmxvY2tfMi5qcGcuanBlZyJdXQ.jpeg?sha=037632ed087d2eea","dict_link":"/collections/earphone","block_propotion":"33.3","dict_image_description":""}},"display_index_4_block_3":{"type":"image","custom_name":"åç","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NjM1ODQ4MzBfaW1nXzE2MzA1NTc3NDNfNzEzNDczZTFfM3g0YmxvY2tfMy5qcGcuanBlZyJdXQ.jpeg?sha=16239ace27826b7b","dict_tablet_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NjM1ODQ4MzBfaW1nXzE2MzA1NTc3NDNfNzEzNDczZTFfM3g0YmxvY2tfMy5qcGcuanBlZyJdXQ.jpeg?sha=16239ace27826b7b","dict_mobile_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NjM1ODQ4MzBfaW1nXzE2MzA1NTc3NDNfNzEzNDczZTFfM3g0YmxvY2tfMy5qcGcuanBlZyJdXQ.jpeg?sha=16239ace27826b7b","dict_link":"/collections/musicheadphones","block_propotion":"33.3","dict_image_description":""}},"1663586000154":{"type":"image","custom_name":"åç","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NjM1ODQ4NjBfaW1nXzE2MzA1NTc3NDNfN2Y4OTY2OTFfM3g0YmxvY2tfNC5qcGcuanBlZyJdXQ.jpeg?sha=616c19d40cf6fa8e","dict_tablet_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NjM1ODQ4NjBfaW1nXzE2MzA1NTc3NDNfN2Y4OTY2OTFfM3g0YmxvY2tfNC5qcGcuanBlZyJdXQ.jpeg?sha=616c19d40cf6fa8e","dict_mobile_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NjM1ODQ4NjBfaW1nXzE2MzA1NTc3NDNfN2Y4OTY2OTFfM3g0YmxvY2tfNC5qcGcuanBlZyJdXQ.jpeg?sha=616c19d40cf6fa8e","dict_link":"/collections/bluetooth-headphones","block_propotion":"33.3","dict_image_description":""}},"1663586001887":{"type":"image","custom_name":"åç","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NjM1ODUwNDNfaW1nXzE2MzA1NTc3NDVfZGU1NWIwZTFfM3g0YmxvY2tfNS
785qcGcuanBlZyJdXQ.jpeg?sha=14dce085a38e57d1","dict_tablet_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NjM1ODUwNDNfaW1nXzE2MzA1NTc3NDVfZGU1NWIwZTFfM3g0YmxvY2tfNS5qcGcuanBlZyJdXQ.jpeg?sha=14dce085a38e57d1","dict_mobile_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NjM1ODUwNDNfaW1nXzE2MzA1NTc3NDVfZGU1NWIwZTFfM3g0YmxvY2tfNS5qcGcuanBlZyJdXQ.jpeg?sha=14dce085a38e57d1","dict_link":"/collections/sports-waterproof-earphones","block_propotion":"33.3","dict_image_description":""}},"1663586005856":{"type":"image","custom_name":"åç","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NjM1ODUwODFfaW1nXzE2MzA1NTc3NDRfMjVlZTRkZTZfM3g0YmxvY2tfNi5qcGcuanBlZyJdXQ.jpeg?sha=a7fe8224f884b34d","dict_tablet_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NjM1ODUwODFfaW1nXzE2MzA1NTc3NDRfMjVlZTRkZTZfM3g0YmxvY2tfNi5qcGcuanBlZyJdXQ.jpeg?sha=a7fe8224f884b34d","dict_mobile_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NjM1ODUwODFfaW1nXzE2MzA1NTc3NDRfMjVlZTRkZTZfM3g0YmxvY2tfNi5qcGcuanBlZyJdXQ.jpeg?sha=a7fe8224f884b34d","dict_link":"/collections/multimediaheadset","block_propotion":"33.3","dict_image_description":""}}},"block_order":["display_index_4_block_1","display_index_4_block_2","display_index_4_block_3","1663586000154","1663586001887","1663586005856"],"custom_name":"èªè¨æçè¨è¨","settings":{"margin_x":"0","margin_bottom":"0","mobile_margin_x":"0","mobile_margin_bottom":"0","mobile_columns":1,"margin_block":"10","mobile_margin_block":"10","mobile_align":"left"}},"_index_8_blocks_2":{"type":"_index_8_blocks","custom_name":"åååé¡","visible":true,"settings":{"dict_title":"Womens","collection_handle":"under-peace-men","limit":"4","margin_x":"0","margin_bottom":"50","mobile_margin_x":"0","mobile_margin_bottom":"24","product_display":"displayPartial"},"blocks":{},"block_order":[]},"_index_product_banner_2":{"type":"_index_product_banner","custom_name":"æ©«å¹
廣å","visible":true,"settings":{"dict_image_url":"/theme_src/i18n_walker/default_img/index_product_banner_2.png","dict_tablet_image_url":"/theme_src/i18n_walker/default_img/index_product_banner_2_tablet.png","dict_mobile_image_url":"/theme_src/i18n_walker/default_img/index_product_banner_2_mobile.png","dict_link":"","display_cta_btn":true,"cta_btn_display_style":"bottomPosition","cta_btn_text":"Shop Mens â","cta_btn_bg_color":"#ffffff","cta_btn_text_color":"#673131","margin_x":"120","margin_bottom":"32","mobile_margin_x":"0","mobile_margin_bottom":"40"},"blocks":{},"block_order":[]},"_index_product_banner_3":{"type":"_index_product_banner","custom_name":"æ©«å¹
廣å","visible":true,"settings":{"dict_image_url":"/theme_src/i18n_walker/default_img/index_product_banner_3.png","dict_tablet_image_url":"/theme_src/i18n_walker/default_img/index_product_banner_3_tablet.png","dict_mobile_image_url":"/theme_src/i18n_walker/default_img/index_product_banner_3_mobile.png","dict_link":"","display_cta_btn":true,"cta_btn_display_style":"bottomPosition","cta_btn_text":"Shop Womens â","cta_btn_bg_color":"#ffffff","cta_btn_text_color":"#673131","margin_x":"120","margin_bottom":"32","mobile_margin_x":"0","mobile_margin_bottom":"40"},"blocks":{},"block_order":[]},"express_delivery_index_4_blocks":{"type":"_index_4_blocks","visible":false,"blocks":{"express_delivery_display_index_4_block_1":{"type":"image","visible":true,"settings":{"title":"","dict_link":"","dict_image_url":"/theme_src/i18n_walker/default_img/index_4_blocks_1.png","dict_tablet_image_url":"","dict_mobile_image_url":""}}},"block_order":["express_delivery_display_index_4_block_1"]},"custom_text":{"type":"custom_text","visible":true,"settings":{}},"blog":{"type":"blog","visible":true,"settings":{"article_limit_in_blog_page":"6"}},"article":{"type":"article","visible":true,"settings":{"display_blog_menu":true,"dict_blog_tags_title":"æç« åé¡","blog_latest_post_limit":"2"}},"category":{"type":"category","visible":true,"settings":{"category_sidebar_set_open":false,"category_product_block_limit":"4","category_product_swiper_item_limit":"
786","category_product_item_limit":"18"}},"shop_setting":{"type":"shop_setting","visible":true,"settings":{"favicon_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3NzY2NDc1OTJfNDh4LnBuZy5wbmciXV0.png?sha=d4c35b0ae2836bab","og_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3NzY2NDc2MDFfMzAweC5wbmcucG5nIl1d.png?sha=99db421763a7021d","shop_title":"-å°ç£å°æ¥è³æ©åç","shop_description":"å
æç¨å¿æé æ¯æ¬¾è³æ©ï¼å°æ³¨æ¼æ¯åç´°ç¯ï¼è®ä½¿ç¨è
æ²æµ¸å¨ç¡æ¯èé©èåè¶é³è³ªçæä½³é«é©ä¸ã","shop_keywords":"è³æ© èçè³æ© èè½è³æ© çç¡ç·è³æ© é»ç«¶è³æ© å¤åªé«è³æ© éåè³æ© 鲿°´è³æ© å
¥è³å¼ è³ç½©å¼ å
¥è³å¼è³æ© è³ç½©å¼è³æ© 鳿¨è³æ© é«é³è³ªè³æ© å¹³å¹è³æ© è³éå¼ è³éå¼è³æ© è³æ©éº¥å
風","prevent_right_click":true},"custom_name":"å
¨ç«è¨å®"},"color_settings":{"type":"color_settings","visible":true,"settings":{"button_color":"#0f5680","button_text_color":"#ffffff","accent_color":"#178bcf","heading_color":"#442244","text_color":"#9A9EA2","price_color":"#178bcf","discount_price_color":"#eb4600","theme_bg_color":"#ffffff","product_border_color":"#9a9ea2","nav_logo_bg_color":"#ffffff","nav_menu_bg_color":"#ffffff","nav_menu_text_color":"#525252","nav_menu_icon_color":"#178bcf","footer_bg_color":"#ffffff","footer_text_color":"#424242","checkout_button_color":"#abb4bb","checkout_accent_color":"#0f5680","tips_text_color":"#0C5460"},"custom_name":"é¡è²è¨å®"},"popup":{"type":"popup","visible":true,"blocks":{"popup_block_1":{"type":"image","visible":false,"settings":{"dict_image_url":""},"custom_name":"åç"}},"block_order":[],"settings":{},"custom_name":"å½çªå»£å"},"product_info":{"type":"product_info","visible":true,"settings":{"display_product_sku":false,"dict_vip_custom_price_text":"","dict_vip_custom_price_href":""},"custom_name":"åºæ¬è¨å®"},"product_description":{"type":"product_description","visible":true,"custom_name":"ååä»ç´¹"},"board_comments":{"type":"board_comments","visible":true,"settings":{},"custom_name":"ååè©è«","thumbnail":"list","draggable":false},"related_products":{"type":"related_products","visible":true,"settings":{"display_related_cols":true,"use_custom_related_cols":true,"dict_group_related_cols_related_product":"ç¸éåå","related_products_limit":"4"},"custom_name":"ç¸éåå"},"contact":{"type":"contact","visible":true,"settings":{"show_google_map":true,"show_google_map_iframe":"\u003ciframe src=\"https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3613.6479170127777!2d121.56760821400371!3d25.07991984260527!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x3442ac6fbd841bbd%3A0x64e16bcf25e3da31!2zMTE05Y-w5YyX5biC5YWn5rmW5Y2A55Ge5YWJ6LevNTEz5be3MzDomZ8!5e0!3m2!1szh-TW!2stw!4v1485156761267\" width=\"600\" height=\"450\" frameborder=\"0\" style=\"border:0\" allowfullscreen\u003e\u003c/iframe\u003e"}},"collection":{"type":"collection","visible":true,"settings":{"collection_sidebar":"main-menu","collection_sidebar_set_open":false,"collection_pagination_limit":"24"},"custom_name":"åååé¡è¨å®"},"404":{"type":"404","visible":true,"settings":{"image_url":"/theme_src/i18n_walker/default_img/404_img.png","dict_404_image_url":"/theme_src/i18n_walker/default_img/404_img.png","dict_title_text":"æ±æï¼æ¤é é¢ä¸å卿è
å·²ç¶è¢«ç§»é¤","dict_btn_text":"è¿åé¦é "}},"blogs_all":{"type":"blogs_all","visible":true,"settings":{}},"bundle_discounts":{"type":"bundle_discounts","visible":true,"settings":{}},"cart":{"type":"cart","visible":true,"settings":{}},"cart_empty":{"type":"cart_empty","visible":true,"settings":{}},"page":{"type":"page","visible":true,"settings":{}},"search":{"type":"search","visible":true,"settings":{"search_link_list":"main-menu"}},"customers/account":{"type":"customers/account","visible":true,"settings":{}},"customers/account_edit":{"type":"customers/account_edit","visible":true,"settings":{}},"customers/activate_account":{"type":"customers/activate_account","visible":true,"settings":{}},"customers/addresses":{"type":"customers/addresses","visible":true,"settings":{}},"customers/bonus_points":{"type":"customers/bonus_points","visible":true,"settings":{}},"customers/cancel":{"type":"customers/cancel","visible":true,"settings":{}},"customers/coupons":{"type":"customers/coupons","visible":true,"settings":{}},"customers/forgot_password":{"type":"customers/forgot_password","visible":true,"settings":{}},"customers/login":{"type":"customers/login","visible":true,"settings":{}},"customers/message":{"type":"customers/message","visible":true,"settings":{}},"customers/messages":{"type":"customers/messages","visible":true,"settings":{}},"customers/modify_password":{"type":"customers/modify_password","visible":true,"settings":{}},"customers/order":{"type":"customers/order","visible":true,"settings":{}},"customers/orders":{"type":"customers/orders","visible":true,"settings":{}},"customers/periodic_order":{"type":"customers/periodic_order","visible":true,"settings":{}},"customers/periodic_orders":{"type":"customers/periodic_orders","visible":true,"settings":{}},"customers/register":{"type":"customers/register","visible":true,"settings":{}},"customers/reset_password":{"type":"customers/reset_password","visible":true,"settings":{}},"customers/return":{"type":"customers/return","visible":true,"settings":{}},"customers/tracking_items":{"type":"customers/tracking_items","visible":true,"settings":{}},"express_delivery-navbar":{"type":"express_delivery-navbar","visible":true,"settings":{}},"express_delivery-content":{"type":"express_delivery-content","visible":true,"settings":{}},"1663586196699":{"type":"_main_slider_custom","custom_name":"輪æç´ æ","visible":true,"settings":{"margin_x":"0","margin_bottom":"15","mobile_margin_x":"0","mobile_margin_bottom":"0","swiper_delay":"6","image_number":"1","image_space":"12","mobile_image_number":"1","mobile_image_space":"8","transition_speed":"0.3"},"blocks":{"1663586196701":{"type":"image","custom_name":"ç´ æ","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3NDI0NTEzODRfTzNfT2ZmaWNpYWwgV2ViX1BDQDcyeC04LnBuZy5wbmciXV0.png?sha=210207fb51f5b331","dict_tablet_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3NDI0NTEzODRfTzNfT2ZmaWNpYWwgV2ViX1BDQDcyeC04LnBuZy5wbmciXV0.png?sha=210207fb51f5b331","dict_mobile_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3NDI0NTEzODRfTzNfT2ZmaWNpYWwgV2ViX3Bob25lQDcyeC04LnBuZy5wbmciXV0.png?sha=db61da587e526a8f","dict_link":"/products/tso1","slide_contents_display":"left","slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff","dict_slide_btn_link":""}},"1663586249179":{"type":"image","custom_name":"ç´ æ","visible":true,"settings":{"dict_image_url":"//cdn1.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3ODUxNDIxMTZfb2ZmaWNpYWwgV2ViQS5wbmcucG5nIl1d.png?sha=727e534760be5cfa","dict_tablet_image_url":"//cdn1.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3ODUxNDIxMTZfb2ZmaWNpYWwgV2ViQS5wbmcucG5nIl1d.png?sha=727e534760be5cfa","dict_mobile_image_url":"//cdn1.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3ODUxNDIwNDRfb2ZmaWNpYWwgV2ViKE1vYmlsZSlBLnBuZy5wbmciXV0.png?sha=1660e3503bbce07a","dict_link":"https://www.spearx-inc.com/products/d7?utm_source=website\u0026utm_medium=banner\u0026utm_campaign=fd26\u0026utm_content=w1_banner","slide_contents_display":"left","slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff","dict_slide_btn_link":""}},"1663586279108":{"type":"image","custom_name":"ç´ æ","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3NDI0NTEzNjRfTzFfT2ZmaWNpYWwgV2ViX1BDQDcyeC04LnBuZy5wbmciXV0.png?sha=6ec2d6888f66daee","dict_tablet_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3NDI0NTEzNjRfTzFfT2ZmaWNpYWwgV2ViX1BDQDcyeC04LnBuZy5wbmciXV0.png?sha=6ec2d6888f66daee","dict_mobile_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3NDI0NTEzNjRfTzFfT2ZmaWNpYWwgV2ViX3Bob25lQDcyeC04LnBuZy5wbmciXV0.png?sha=028393857c59d63e","dict_link":"/products/tso3","slide_contents_display":"left","slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff","dict_slide_btn_link":""}},"1663757938211":{"type":"image","custom_name":"ç´ æ","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NjM3NTc3ODJf6IGy54m55ZOh5peF5YWs5ZGK6Kit6KiIX-WumOe2sl8yM0A3MngtMTAwLmpwZy5qcGVnIl1d.jpeg?sha=2e4221581b4e7828","dict_tablet_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NjM3NTc3ODJf6IGy54m55ZOh5peF5YWs5ZGK6Kit6KiIX-WumOe2sl8yM0A3MngtMTAwLmpwZy5qcGVnIl1d.jpeg?sha=2e4221581b4e7828","dict_mobile_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NjM3NTc3ODJf6IGy54m55ZOh5peF5YWs5ZGK6Kit6KiIX-WumOe2sl8yM0A3MngtMTAwLmpwZy5qcGVnIl1d.jpeg?sha=2e4221581b4e7828","dict_link":"/pages/æåæé»"}},"1669284836244_0":{"type":"image","custom_name":"ç´ æ","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2OTM4MjA1NDhf5ZWG5a625o-Q5L6bMy0xLmpwZWcuanBlZyJdXQ.jpeg?sha=99b3007741089562","dict_tablet_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2OTM4MjA1NDhf5ZWG5a625o-Q5L6bMy0xLmpwZWcuanBlZyJdXQ.jpeg?sha=99b3007741089562","dict_mobile_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2OTM4MjA2MTdf5ZWG5a625o-Q5L6bMy0yLmpwZWcuanBlZyJdXQ.jpeg?sha=3d3c3eb7c432fe89","dict_link":"/collections/headphone","main_slider_image_alt":"","slide_contents_display":"left","slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff","dict_slide_btn_link":""}},"1669887422303_0":{"type":"image","custom_name":"ç´ æ","visible":true,"settings":{"dict_image_url":"","dict_tablet_image_url":"","dict_mobile_image_url":"","dict_link":""}},"1672714057172_0":{"type":"image","custom_name":"ç´ æ","visible":true,"settings":{"dict_image_url":"//cdn1.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3OTA2NTAxNDJfT2ZmaWNpYWwgV2ViX1BDLmpwZy5qcGVnIl1d.jpeg?sha=205d9c321672092e","dict_tablet_image_url":"//cdn1.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3OTA2NTAxNDJfT2ZmaWNpYWwgV2ViX1BDLmpwZy5qcGVnIl1d.jpeg?sha=205d9c321672092e","dict_mobile_image_url":"//cdn1.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3OTA2NTAxNDJfT2ZmaWNpYWwgV2ViX3Bob25lLmpwZy5qcGVnIl1d.jpeg?sha=8d914e0f4410230c","dict_link":"/products/d7","slide_contents_display":"left","slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff","dict_slide_btn_link":""}},"1673601203075_0":{"type":"image","custom_name":"ç´ æ","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NzM2MDA5NjlfT2ZmaWNpYWwgV2ViX1BDQDcyeC0xMDAgKDEpLmpwZy5qcGVnIl1d.jpeg?sha=bf987a4cbb88875d","dict_tablet_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NzM2MDA5NjlfT2ZmaWNpYWwgV2ViX1BDQDcyeC0xMDAgKDEpLmpwZy5qcGVnIl1d.jpeg?sha=bf987a4cbb88875d","dict_mobile_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NzM2MDA5ODdfT2ZmaWNpYWwgV2ViX3Bob25lQDcyeC0xMDAuanBnLmpwZWciXV0.jpeg?sha=a359dfcbdfe78188","dict_link":"/pages/æåæé»"}},"1675410364031_0":{"type":"image","custom_name":"ç´ æ","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NzU0MTA3MDBfMTkyMHg5MTRweF9PZmZpY2lhbCB3ZWIwMi5wbmcucG5nIl1d.png?sha=c1d853cfca5e7eb8","dict_tablet_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NzU0MTAxMTRfMTkyMHg5MTRweF9PZmZpY2lhbCB3ZWJANzJ4LTEwMC5qcGcuanBlZyJdXQ.jpeg?sha=c7174d4b4156d56b","dict_mobile_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NzU0MTAxNDBfMTY0MHg4NTZweF9mYWNlYm9va0A3MngtMTAwLmpwZy5qcGVnIl1d.jpeg?sha=7a1c8c478f9a4d32","dict_link":""}},"1675410991818_0":{"type":"image","custom_name":"ç´ æ","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NzU0MTAxMTRfMTkyMHg5MTRweF9PZmZpY2lhbCB3ZWJANzJ4LTEwMC5qcGcuanBlZyJdXQ.jpeg?sha=c7174d4b4156d56b","dict_tablet_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NzU0MTAxNDBfMTY0MHg4NTZweF9mYWNlYm9va0A3MngtMTAwLmpwZy5qcGVnIl1d.jpeg?sha=7a1c8c478f9a4d32","dict_mobile_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NzU0MTAxNDBfMTY0MHg4NTZweF9mYWNlYm9va0A3MngtMTAwLmpwZy5qcGVnIl1d.jpeg?sha=7a1c8c478f9a4d32","dict_link":""}},"1675414028414_0":{"type":"image","custom_name":"ç´ æ","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NzYyNzQ1ODdfMTkyMHg5MTRweF9PZmZpY2lhbCB3ZWIucG5nLnBuZyJdXQ.png?sha=a0f047868bf06653","dict_tablet_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NzYyNzQ1ODdfMTkyMHg5MTRweF9PZmZpY2lhbCB3ZWIucG5nLnBuZyJdXQ.png?sha=a0f047868bf06653","dict_mobile_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NzYyNzQ2MDJfOTYweDQ4MHB4XzE5MjB4OTE0cHhfT2ZmaWNpYWwgd2ViKG1vYmlsZSkucG5nLnBuZyJdXQ.png?sha=96cf725c58101d86","dict_link":"/products/d5","main_slider_image_alt":"New Arrival","slide_contents_display":"left","slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff","dict_slide_btn_link":""}},"1698743614216_0":{"type":"image","custom_name":"ç´ æ","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3NzMyMDgwMDBf6IGy54m55a6Y57ayQDcyeC04LnBuZy5wbmciXV0.png?sha=fbc0121b1a94e748","dict_tablet_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3NzMyMDgwMDBf6IGy54m55a6Y57ayQDcyeC04LnBuZy5wbmciXV0.png?sha=fbc0121b1a94e748","dict_mobile_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3NzMyMDgwMDBf6IGy54m55a6Y57ayX-aJi-apn0A3MngtOC5wbmcucG5nIl1d.png?sha=2bd08a5f33e5ef28","dict_link":"/pages/æåæé»","slide_contents_display":"left","slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff","dict_slide_btn_link":"/pages/æåæé»"}},"1767668412474_0":{"type":"image","custom_name":"ç´ æ","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3NzMzMDAyNTlfb2ZmaWNpYWwgV2ViQUA3MngtMTAwLmpwZy5qcGVnIl1d.jpeg?sha=eae96d64ad5148ad","dict_tablet_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3NzMzMDAyNTlfb2ZmaWNpYWwgV2ViQUA3MngtMTAwLmpwZy5qcGVnIl1d.jpeg?sha=eae96d64ad5148ad","dict_mobile_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3NzMzMDAyNTlfb2ZmaWNpYWwgV2ViKE1vYmlsZSlBQDcyeC0xMDAuanBnLmpwZWciXV0.jpeg?sha=8874765831a40088","dict_link":"/products/d7","slide_contents_display":"left","dict_slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff"}},"1773300799276_0":{"type":"image","custom_name":"ç´ æ","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3NzMzMDAyNTlfb2ZmaWNpYWwgV2ViQkA3MngtMTAwLmpwZy5qcGVnIl1d.jpeg?sha=de5fc476cba6b71e","dict_tablet_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3NzMzMDAyNTlfb2ZmaWNpYWwgV2ViQkA3MngtMTAwLmpwZy5qcGVnIl1d.jpeg?sha=de5fc476cba6b71e","dict_mobile_image_url":"//cdn1-nex
78t.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3NzMzMDAyNTlfb2ZmaWNpYWwgV2ViKE1vYmlsZSlCQDcyeC0xMDAuanBnLmpwZWciXV0.jpeg?sha=90d66a79d52c64d4","dict_link":"/products/d7","slide_contents_display":"left","dict_slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff"}},"1790650758992_0":{"type":"image","custom_name":"ç´ æ","visible":true,"settings":{"dict_image_url":"//cdn1.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3OTA2NTAyMTVf6IGy54m55a6Y57ayXzAxLnBuZy5wbmciXV0.png?sha=a329c04734caace9","dict_tablet_image_url":"//cdn1.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3OTA2NTAyMTVf6IGy54m55a6Y57ayXzAxLnBuZy5wbmciXV0.png?sha=a329c04734caace9","dict_mobile_image_url":"//cdn1.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3OTA2NTAyMTRf6IGy54m55a6Y57ayX-aJi-apn18wMS5wbmcucG5nIl1d.png?sha=dc9272f1a2f517ab","dict_link":"https://linktr.ee/spearx_inc","slide_contents_display":"left","dict_slide_btn_link":"","slide_title_color":"#000000","slide_content_color":"#000000","slide_btn_bg_color":"#000000","slide_btn_text_color":"#ffffff"}}},"block_order":["1790650758992_0","1672714057172_0","1767668412474_0","1698743614216_0","1669284836244_0","1663586196701","1663586279108"]},"combo_product_info":{"type":"combo_product_info","visible":true,"settings":{}},"combo_product_desc":{"type":"combo_product_desc","visible":true,"settings":{}},"customers/other_valid_orders":{"type":"customers/other_valid_orders","visible":true,"settings":{}},"1776648973652_2":{"type":"_index_8_blocks","custom_name":"åååé¡","visible":true,"settings":{"dict_title":"","collection_handle":"earphone","limit":"8","product_arrangement":"2","product_column_for_pc":"4","product_column_for_mobile":"3","product_alignment":"midPosition","product_text_align":"center","margin_x":"400","margin_bottom":"50","mobile_margin_x":"0","mobile_margin_bottom":"50","product_display":"displayPartial","product_card_hover_effect":"zoom","product_image_border_radius":"1"},"blocks":{},"block_order":[]},"1776649601967_1":{"type":"_index_product_banner","custom_name":"æ©«å¹
廣å","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3NzMzMDAyNTlfb2ZmaWNpYWwgV2ViQkA3MngtMTAwLmpwZy5qcGVnIl1d.jpeg?sha=de5fc476cba6b71e","dict_tablet_image_url":"","dict_mobile_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3NzMzMDAyNTlfb2ZmaWNpYWwgV2ViKE1vYmlsZSlCQDcyeC0xMDAuanBnLmpwZWciXV0.jpeg?sha=90d66a79d52c64d4","dict_link":"/products/d7","cta_btn_display_style":"topPosition","cta_btn_bg_color":"#000000","cta_btn_text_color":"#ffffff","margin_x":"0","margin_bottom":"50","mobile_margin_x":"0","mobile_margin_bottom":"24","link_open_in_new_tab":true,"display_cta_btn":false},"blocks":{},"block_order":[]},"1776649932736_1":{"type":"_index_product_banner","custom_name":"æ©«å¹
廣å","visible":true,"settings":{"dict_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NzYyNzQ1ODdfMTkyMHg5MTRweF9PZmZpY2lhbCB3ZWIucG5nLnBuZyJdXQ.png?sha=a0f047868bf06653","dict_tablet_image_url":"","dict_mobile_image_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2NzYyNzQ2MDJfOTYweDQ4MHB4XzE5MjB4OTE0cHhfT2ZmaWNpYWwgd2ViKG1vYmlsZSkucG5nLnBuZyJdXQ.png?sha=96cf725c58101d86","dict_link":"/products/d5","cta_btn_display_style":"topPosition","cta_btn_bg_color":"#000000","cta_btn_text_color":"#ffffff","margin_x":"0","margin_bottom":"50","mobile_margin_x":"0","mobile_margin_bottom":"24","link_open_in_new_tab":true},"blocks":{},"block_order":[]},"1776649956574_2":{"type":"_index_8_blocks","custom_name":"åååé¡","visible":true,"settings":{"dict_title":"","collection_handle":"headphone","limit":12,"product_arrangement":"1","product_column_for_pc":"4","product_column_for_mobile":"2","product_alignment":"leftPosition","product_text_align":"center","margin_x":"0","margin_bottom":"50","mobile_margin_x":"0","mobile_margin_bottom":"24","product_display":"displayDefault","product_card_hover_effect":"button","product_image_border_radius":"15"},"blocks":{},"block_order":[]},"1776649999177_2":{"type":"_index_8_blocks","custom_name":"åååé¡","visible":true,"settings":{"dict_title":"","collection_handle":"headphone","limit":"8","product_arrangement":"2","product_column_for_pc":"4","product_column_for_mobile":"3","product_alignment":"leftPosition","product_text_align":"center","margin_x":"400","margin_bottom":"50","mobile_margin_x":"0","mobile_margin_bottom":"50","product_display":"displayPartial","product_card_hover_effect":"zoom","product_image_border_radius":"0"},"blocks":{},"block_order":[]},"announcement_bar":{"type":"announcement_bar","visible":true,"blocks":{"announcement_bar_block_1":{"type":"image","visible":true,"settings":{"display_only_index":false,"display_period":"limited","dict_link":"","link_open_in_new_tab":false,"dict_image_url":"","dict_image_tablet_url":"","dict_image_mobile_url":"","image_alt":"","dict_content":"","text_size":"12","text_color":"#ffffff","bg_color":"#000000","timer_text_color":"#ffffff","timer_bg_color":"#c58787","migrated_from_navbar":true},"custom_name":"åç"}},"block_order":["announcement_bar_block_1"],"settings":{"display_mode":"vertical","carousel_interval":"3"},"custom_name":"ç½®é å
Œ"}},"navbar_image_logo":true,"show_default_all_products":true,"one_dimension_limit":"
786","two_dimension_limit":"10","header_banner_display":true,"header_banner_link":"/","display_main_slider":true,"display_phone":true,"phone_number":"0912345678","display_fax_number":true,"shop_fax_number":"0222345678","display_shop_email":true,"shop_email":"[email protected]","display_shop_address":true,"shop_address":"測試å°å","display_office_time":true,"shop_office_time":"10:00-17:00","index_event_slider_display":true,"index_event_slider_item_1_display":true,"dict_index_event_slider_item_1_link":"#","index_event_slider_item_2_display":true,"dict_index_event_slider_item_2_title":"2019ç§å£é款æ°åä¸å¸","dict_index_event_slider_item_2_link":"#","index_event_slider_item_3_display":true,"dict_index_event_slider_item_3_title":"å
¨é¤¨ä»»é¸ä¸ä»¶çµå¸³åäº«ææ£ï¼ï¼8æï¼ï¼","dict_index_event_slider_item_3_link":"#","index_event_slider_item_4_display":true,"dict_index_event_slider_item_4_title":"FINAL SALE/å¤å¤©ç±é·ç¾æé款è£è²¨å°åº","dict_index_event_slider_item_4_link":"#","index_event_slider_item_5_display":true,"dict_index_event_slider_item_5_title":"ç±è³£åæ¸","dict_index_event_slider_item_5_link":"#","index_event_slider_item_6_display":true,"dict_index_event_slider_item_6_title":"ç¾å¨è¨»åæå¡å³å¯äº«ææ£éï¼50ï¼ç¾æï¼","dict_index_event_slider_item_6_link":"#","index_event_slider_item_7_display":false,"dict_index_event_slider_item_7_title":"","dict_index_event_slider_item_7_link":"","index_event_slider_item_8_display":false,"dict_index_event_slider_item_8_title":"","dict_index_event_slider_item_8_link":"#","index_event_slider_item_9_display":false,"dict_index_event_slider_item_9_title":"","dict_index_event_slider_item_9_link":"#","index_event_slider_item_10_display":false,"dict_index_event_slider_item_10_title":"","dict_index_event_slider_item_10_link":"#","index_4_slider_display":true,"dict_index_4_slider_title":"Instagram","index_4_slider_item_1_display":true,"dict_index_4_slider_item_1_link":"#","index_4_slider_item_2_display":true,"dict_index_4_slider_item_2_link":"#","index_4_slider_item_3_display":true,"dict_index_4_slider_item_3_link":"#","index_4_slider_item_4_display":true,"dict_index_4_slider_item_4_link":"#","index_4_slider_item_5_display":true,"dict_index_4_slider_item_5_link":"#","index_4_slider_item_6_display":false,"dict_index_4_slider_item_6_link":"#","index_4_slider_item_7_display":false,"dict_index_4_slider_item_7_link":"#","index_4_slider_item_8_display":false,"dict_index_4_slider_item_8_link":"#","index_video_blocks_display":true,"dict_index_video_blocks_title":"Youtube","dict_index_video_blocks_video_link":"https://www.youtube.com/watch?v=3bI4IUIVjCk","collection_sidebar":"main-menu","collection_sidebar_set_open":false,"collection_pagination_limit":"24","product_slogan_display":false,"display_product_total_sold":false,"display_periodic_order_label":false,"cart_quantity_limit":"0","is_empty_clickable":false,"is_first_selected":false,"display_product_images_color":false,"discount_product_images_color_expand":false,"display_product_discounts_list":true,"display_discount_price_name":true,"discount_price_slogan_url":"//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3NzY2NDk0NTZfb25zYWxlX2ljb24ucG5nLnBuZyJdXQ.png?sha=33d4dbfff22b6629","dict_discount_price_name":"","display_discount_price_suggestion_name":false,"dict_discount_price_suggestion_name":"","display_product_section_description":true,"dict_product_section_description":"ååä»ç´¹","description_section_spec_setting":true,"dict_product_description_section_spec":"è¦æ ¼èªªæ","description_section_shipping_setting":false,"dict_product_description_section_shipping":"ééæ¹å¼","vip_custom_price_visible":false,"display_global_event_1":false,"dict_show_global_event_1_link":"#","display_global_event_2":false,"dict_show_global_event_2_link":"#","display_global_event_3":false,"dict_show_global_event_3_link":"#","display_contact_address":true,"dict_contact_address":"測試å°å","show_google_map":true,"show_google_map_iframe":"\u003ciframe src=\"https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3613.6479170127777!2d121.56760821400371!3d25.07991984260527!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x3442ac6fbd841bbd%3A0x64e16bcf25e3da31!2zMTE05Y-w5YyX5biC5YWn5rmW5Y2A55Ge5YWJ6LevNTEz5be3MzDomZ8!5e0!3m2!1szh-TW!2stw!4v1485156761267\" width=\"600\" height=\"450\" frameborder=\"0\" style=\"border:0\" allowfullscreen\u003e\u003c/iframe\u003e","display_selected_blog":true,"selected_blog":"news","product_scale":"three_to_four_scale","google_font":"{'ja':{'value':'Noto Sans JP'},'zh-TW':{'value':'Noto Sans TC'},'en':{'value':'Noto Sans TC'},'zh-CN':{'value':'Noto Sans TC'}}","styled_shop_menu":"buttonType","display_inventory_policy":false,"display_product_vendor":true,"product_video_display_location":"before","product_text_align":"center","product_labels":{"items":[{"id":"sale_label","kind":"system","title":"ç¹å¹æ¨ç±¤","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"large"},{"id":"out_of_stock_label","kind":"system","title":"缺貨æ¨ç±¤","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"small"},{"id":"periodic_event_label","kind":"system","title":"宿å®é¡æ¨ç±¤","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"small"},{"id":"df8836d5-b827-4074-b3f1-2f296168bd5a","kind":"custom","title":"èªå®ç¾©æ¨ç±¤ 1","tag":"","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"small"},{"id":"9384ee2b-b639-4b13-890e-2a1fdf1b4472","kind":"custom","title":"èªå®ç¾©æ¨ç±¤ 2","tag":"","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"small"}
78,{"id":"14eb02e4-c6a5-4771-80b1-7d0560803067","kind":"custom","title":"èªå®ç¾©æ¨ç±¤ 3","tag":"","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"small"},{"id":"35a08bfb-21e0-434a-870b-8dfb1ac40a17","kind":"custom","title":"èªå®ç¾©æ¨ç±¤ 4","tag":"","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"small"},{"id":"a9416144-0329-46c0-82f4-55d7c92836eb","kind":"custom","title":"èªå®ç¾©æ¨ç±¤ 5","tag":"","display":false,"type":"text","dict_text":{"zh-TW":""},"image":"","image_size":"small"}]},"nav_icon_style":"icon_type_default","product_card_hover_effect":"zoom","product_image_border_radius":"0"}); 79 </script>
79 80 81 82 83 84 85 86 87 88 89 90 <!-- for vendor --> 91 <!-- cyb_snippet _bootstrap start --> 92 93<!-- cyb_snippet _bootstrap end --> 94 <link href='//cdn1.cybassets.com/frontend/shop/beta_theme/css/vendor-ec858cfa815323bb.css' rel='stylesheet' type='text/css' media='all' /> 95 96 <!-- common css rulesets --> 97 <link href='//cdn1.cybassets.com/frontend/shop/beta_theme/css/common-ec858cfa815323bb.css' rel='stylesheet' type='text/css' media='all' /> 98 99 <!-- for navbar --> 100 <link href='//cdn1.cybassets.com/frontend/shop/beta_theme/css/navbar-ec858cfa815323bb.css' rel='stylesheet' type='text/css' media='all' /> 101 102 <!-- for footer --> 103 <link href='//cdn1.cybassets.com/frontend/shop/beta_theme/css/footer-ec858cfa815323bb.css' rel='stylesheet' type='text/css' media='all' /> 104 105 <!-- theme assets --> 106 <link href='//cdn1.cybassets.com/frontend/shop/beta_theme/css/main-ec858cfa815323bb.css' rel='stylesheet' type='text/css' media='all' /> 107 108 <!-- for vendor --> 109
109<script src='//cdn1.cybassets.com/frontend/shop/beta_theme/js/vendor-ec858cfa815323bb.js' type='text/javascript'></script>
109 110 111
111<script> 112 window.sci = "eyJzaG9wX2lkIjo2NzIxLCJzaG9wX3BsYW4iOiJhZHZhbmNlIiwiZGltX2Fm\nZmlsaWF0ZSI6bnVsbCwiY3VzdG9tZXJfaWQiOm51bGwsImN1c3RvbWVyX25h\nbWUiOm51bGwsInNob3BfbmFtZSI6IlNwZWFyWCDogbLnibnnp5HmioAiLCJz\naGFyZV9hdHRyaWJ1dGlvbl9lbmFibGVkIjp0cnVlfQ==\n"; 113 </script>
113 114 115 116<meta name="csrf-param" content="authenticity_token" /> 117<meta name="csrf-token" content="TL24HtPC5R67AQyf9FbKpW3mVK6When4bjw3ADclN2Gjr0e-PjjH2DWcbtfTXLOp2FUkjs-N-a3SIj3CBwRLqQ" />
118<script>(function () { 119 window.gaConfigurations = {"useProductIdInProductEvents":false}; 120})(); 121</script>
vendor: 1 bytes, line 121
121
122<script>(function () { 123 window.CYBERBIZ_PageContext = {"page_type":"collection"}; 124})(); 125</script>
125 126<link href="//cdn1.cybassets.com/frontend/shop/quark-ec858cfa815323bb.css" rel="stylesheet" type="text/css" media="all" /> 127
127<script> 128 window.shopScriptHelper = { 129 i18nLocale: "zh-TW", 130 i18nLocaleDefault: "zh-TW", 131 availableCurrencies: [], 132 defaultCurrency: "TWD", 133 currenciesInfo: [{"html_unit":"NT${{amount_no_decimals}}","email_unit":"NT${{amount_no_decimals}}","trailing_zeros":false,"name":"æ°å°å¹£ (TWD)","html":"NT${{amount_no_decimals}}","unit":"","decimal_precision":0,"money_format":"%u%n","format":"NT${{amount_no_decimals}}","code":"TWD","email":"NT${{amount_no_decimals}}","symbol":"NT$"}], 134 vueOverrideTranslations: {"zh-TW":{"vue":{}}}, 135 hasI18nInContextEditing: false, 136 shopMultipleCurrenciesCheckout: false, 137 hasLocalizedShopPriceFormat: true, 138 } 139 </script>
139 140 141 142
142<script 143 src="//cdn1.cybassets.com/frontend/shop/tolgeeIntegration-ec858cfa815323bb.js"> 144 </script>
144 145
145<script defer> 146 /* 147 * Enable in-context translation for Liquid part on the page. 148 * This must be executed last to prevent conflicts with other Vue apps. 149 * So put it to `onload`, which will be executed after DOM ready's app mount 150 */ 151 window.onload = function() { 152 if ( 153 window.shopScriptHelper && 154 window.shopScriptHelper.hasI18nInContextEditing 155 ) { 156 window.initTolgeeForLiquid() 157 } 158 } 159 </script>
159 160
161<script> var google_con_event_labels = []</script>
vendor: 1 bytes, line 161
161
162<script src="//cdn1.cybassets.com/frontend/shop/pageEventHandler-ec858cfa815323bb.js"></script>
vendor: 1 bytes, line 162
162
163<script src="//cdn1.cybassets.com/frontend/shop/globalAnalysis-e4c650eb0b.js"></script>
163 164
164<script> 165 window.c12t = {"customer_id":null,"impressions":[{"name":"æ¿æç¨è³ç½©/è³å¥","id":"434174","price":"400.0","brand":"SpearX è²ç¹ç§æ","category":"è³æ©å¨é","list":"default","position":1},{"name":"ç½è 鲿°´æ¶ç´ç","id":"33383742","price":"199.0","brand":"SpearX è²ç¹ç§æ","category":"è³æ©å¨é","list":"default","position":2}]}; 166 </script>
166 167 168 <meta name="request-id" content="64F6432931C3EAD5A6A43F3831268F3A"/> 169 170<link rel="canonical" href="https://www.spearx-inc.com/collections/spin-off-product">
171<script src="//cdn1.cybassets.com/frontend/shop/carousel-ec858cfa815323bb.js"></script>
171 172
172<script> 173 window.parent.postMessage({ type: 'previewShopInit', currentUrl: window.location.href }, '*'); 174 </script>
174 175
176<script src="//cdn1.cybassets.com/frontend/appStoreSDK/main.2798231628aa7fab87a9.js"></script>
vendor: 1 bytes, line 176
176
177<script>window.CYBERBIZ_AppScriptSettings = {"shop_add_ons":"W3sidmVuZG9yX3R5cGUiOiJDWUJFUkJJWiBHb29nbGUgQW5hbHl0aWNzIDQi\nLCJhcHBfaWQiOiJRVWo1WnFvZUlPUjlaM2JaS2trMG44N3l5a0FpOWU0NURE\naDJ0YlFnaUJBIiwic2V0dGluZ3MiOnsiZ3RhZ19pZCI6IkctR1MyUU1YM1ZO\nRSwgRy00QjdSSzdGSFdIIn19LHsidmVuZG9yX3R5cGUiOiJHb29nbGUgQW5h\nbHl0aWNzIDQiLCJhcHBfaWQiOiJSYkpWMTVFcVZWOHJ1Umo3NVlmV3Z1RUlD\nRm90Q0FPZm0xSDZtZ3hyNkZBIiwic2V0dGluZ3MiOnsiZ3RhZ19pZCI6Ikct\nS1pUWUo4SlJWQyJ9fSx7InZlbmRvcl90eXBlIjoiRGlnaXRhbCBJbnRlbGxp\nZ2VuY2UgVHJhY2tlciIsImFwcF9pZCI6IjFiNTBhODZkYzJkMTQxODM4OGZk\nZWRmN2EwZDQzOWFlIiwic2V0dGluZ3MiOnt9fV0=\n"} 178</script>
vendor: 1 bytes, line 178
178
179<script src="https://cdn.cybassets.com/appmarket/api/common/attachments/entrypoint/9d6f4550aad572e9f70abb70ae5a6552482cf617ea5e4d5a32ed4ebbb5d60d54.js"></script>
vendor: 1 bytes, line 179
179
180<script src="https://cdn.cybassets.com/appmarket/api/common/attachments/entrypoint/a810ec58aab67d16f8de1c4adf06fc7cc9f4477ec503b9cb1a998741bc692652.js"></script>
vendor: 1 bytes, line 180
180
181<script src="https://cdn.cybassets.com/appmarket/api/common/attachments/entrypoint/35cd1f36a4a855bacbaa53900f8e17b376d4cab44c73812eef261aef6435163d.js"></script>
vendor: 1 bytes, line 181
181
182<script>window.CYBERBIZ.initializeSDK.initialize();</script>
vendor: 1 bytes, line 182
182
183<script src="//cdn1.cybassets.com/frontend/shop/setAffliateCookie-ec858cfa815323bb.js"></script>
vendor: 1 bytes, line 183
183
184<script src="//cdn1.cybassets.com/assets/url-share-attribution-087b8170482449a1d92fbb0c92f9ce3ef38a84f35c52016ed831bd3efd8eed8b.js"></script>
184 185 186 187 188 189<meta name="title" content="è³æ©é±éé ä»¶"> 190<meta property="og:title" content="è³æ©é±éé ä»¶"> 191<meta name="description" content="SpearXè²ç¹è³æ©ç¸éé±éé ä»¶"> 192<meta property="og:description" content="SpearXè²ç¹è³æ©ç¸éé±éé ä»¶"> 193<meta name="keywords" content="è³æ©é±éé ä»¶,è³ç½©,æ¶ç´ç,絨å¸è¢"> 194<meta property="og:url" content="https://www.spearx-inc.com/collections/spin-off-product"> 195<meta property="og:type" content="og:product"> 196 197 198 199
199<script src='//cdn1.cybassets.com/frontend/shop/collectionPage-ec858cfa815323bb.js' type='text/javascript'></script>
199 200 201 202 203 204 <style id="color_settings"> 205 :root { 206 207 --button: #0f5680; 208 209 210 211 --button_text: #ffffff; 212 213 214 215 --accent: #178bcf; 216 217 218 219 --heading: #442244; 220 221 222 223 --text: #9A9EA2; 224 225 226 227 --price: #178bcf; 228 229 230 231 --discount_price: #eb4600; 232 233 234 235 --theme_bg: #ffffff; 236 237 238 239 --nav_logo_bg: #ffffff; 240 241 242 243 --nav_menu_bg: #ffffff; 244 245 246 247 --nav_menu_text: #525252; 248 249 250 251 --nav_menu_icon: #178bcf; 252 253 254 255 --footer_bg: #ffffff; 256 257 258 259 --footer_text: #424242; 260 261 262 263 --checkout_button: #abb4bb; 264 265 266 267 --checkout_accent: #0f5680; 268 269 270 271 --product_border: #9a9ea2; 272 273 274 275 --tips_text: #0C5460; 276 277 278 279 280 281 } 282</style> 283 284 285 286 287 288 <!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 74 bytes, lines 288-289
288 289 <script async src="https://www.googletagmanager.com/gtag/js?id=
289G-GS2QMX3VNE
vendor: 22 bytes, lines 289-290
289"></script> 290
290<script> 291
vendor: 183 bytes, lines 291-296
291window.dataLayer = window.dataLayer || []; 292 function gtag(){dataLayer.push(arguments);} 293 gtag('js', new Date()); 294 295 296 gtag('config', '
296UA-112626957-1
vendor: 27 bytes, line 296
296', {"groups":"ecommerce"});
296gtag('config', 'AW-783097998', {"groups":"dynamic_remarketing"});</script>
296 297
297<script> 298 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 299 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 300 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 301 })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 302 303 ga('create', '', 'auto', {'name': 'cyberbiz'}); 304 ga('cyberbiz.require', 'displayfeatures'); 305 ga('cyberbiz.set', 'dimension1', '6721'); 306 ga('cyberbiz.require', 'ec'); 307 ga('cyberbiz.send', 'pageview'); 308 </script>
308 309 310
310<script>
vendor: 426 bytes, lines 310-317
310 311 !function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod? 312 n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n; 313 n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0; 314 t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, 315 document,'script','//connect.facebook.net/en_US/fbevents.js'); 316 317 fbq('init', '
317177651310864227
vendor: 38 bytes, lines 317-318
317', {}, {'agent':'plcyberbiz'}); 318
318fbq('track', "PageView", '', { eventID: "PageView_64F6432931C3EAD5A6A43F3831268F3A" }); 319 var facebook_pixel_id = '177651310864227'</script>
319 320 321 </head> 322 323 324 325 <body style="display: flex; flex-direction: column;"><!-- Google Tag Manager (noscript) -->
vendor: 74 bytes, lines 325-326
325 326 <noscript><iframe src="//www.googletagmanager.com/ns.html?id=
326GTM-K3TFHTS9
vendor: 105 bytes, lines 326-328
326" 327 height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 328
328<!-- End Google Tag Manager (noscript) -->
vendor: 74 bytes, lines 328-330
328 329 <noscript><iframe 330 src="//www.googletagmanager.com/ns.html?id=
330GTM-TXD9LVJ
vendor: 117 bytes, lines 330-336
330" 331 height="0" 332 width="0" 333 style="display:none;visibility:hidden"> 334 </iframe></noscript> 335 336
336<!-- Navigation --> 337 <!-- cyb_snippet liquid_helper start -->
338<script> 339 function getDiscountPriceName() { 340 return "true" === "true" ? "" : ""; 341 } 342 343 function getDiscountPriceSuggestionName() { 344 return "false" === "true" ? "" : ""; 345 } 346 347 document.addEventListener('DOMContentLoaded', function() { 348 const languageHandle = Cookies.get("language"); 349 const defaultLanguage = {"handle":"zh-TW","title":"ç¹é«ä¸æ","currency_code":"TWD"}; 350 const languages = []; 351 const currency = window.shopScriptHelper.defaultCurrency; 352 const currencies = window.shopScriptHelper.currenciesInfo; 353 window.liquidHelper = { 354 shopInternational: false, 355 defaultLanguage: defaultLanguage, 356 language: languages.find(function(l) { 357 return l.handle === languageHandle; 358 }) || defaultLanguage, 359 shopMultipleCurrenciesCheckout: false, 360 shopMultipleCurrencies: false, 361 defaultCurrencyFormat: "NT${{amount_no_decimals}}", 362 defaultCurrency: currency, 363 getCurrency: function() { 364 const currencyValue = Cookies.get("currencyValue") || currency; 365 return currencies.find(function(c) { return c.code === currencyValue; } 366 )}, 367 getDefaultCurrency: function() { return currencies.find(function(c) { 368 return c.code === currency; 369 })}, 370 getAvailableCurrencies: function() { return currencies.map(c => c.code) },
371 getCurrencyFormatInfo: function(currency) { 372 const currencyInfo = currencies.find(c => c.code === currency) 373 return _.pick(currencyInfo, [ 374 'decimal_precision', 375 'symbol', 376 'money_format', 377 'unit', 378 'trailing_zeros', 379 'html_unit', 380 'code', 381 ]); 382 }, 383 cartQuantityLimit: (function() { 384 const limit = Number("0" || undefined); 385 return limit <= 0 || isNaN(limit) ? Number.POSITIVE_INFINITY : limit; 386 })(), 387 isFirstVariantSelected: false , 388 isImageColorsUsed: false , 389 isEmptyClickable: false , 390 hasAddBuyProduct: '' !== "" ? true : false, 391 hasPriceWithDiscountPlugin: 'false' ? true : false, 392 conversionBonus: 1, 393 hasLocalizedShopPriceFormat: true, 394 hasCustomerCartPlugin: true, 395 isCartEnabled: true, 396 cdnHost: '//cdn1.cybassets.com', 397 hasShopCustomPasswordRulePlugin: false, 398 hasDisableProductQuantityValidation: false, 399 hasBreadcrumbReferrerEnabled: false, 400 }; 401 }); 402</script>
402 403 404<!-- cyb_snippet liquid_helper end --> 405
406<script src='//cdn1.cybassets.com/frontend/shop/navbarSection-ec858cfa815323bb.js' type='text/javascript'></script>
406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423<style> 424 425 #navbar { 426 --navbar-pc-title-scale: 1.0; 427 --navbar-pc-body-scale: 1.0; 428 --navbar-mobile-title-scale: 1.0; 429 --navbar-mobile-body-scale: 1.0; 430 } 431 432 433 434 435 436</style> 437 438 439 <span id="navbar" class="drawer drawer--left font-size-setting-enabled"> 440 <header id="header" class="qk-w--100vw qk-pos--fixed qk-t--0 qk-l--0"> 441 442 443 444 <div id="announcement-bar"></div> 445 446 447 448 449 <div class="computer_nav qk-hidden--mobile "> 450 <div class="header_logo qk-bg--nav_logo_bg"> 451 <div class="qk-pos--rel"> 452 <div class="qk-text--center"> 453 <!-- logo start --> 454 455 <nav class="logo qk-display--il_bk"> 456 <a href="/" class="qk-w--100"> 457 <img 458 src="//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2OTUyMDEzNThfb3JpLnBuZy5wbmciXV0.png?sha=6f96f2e7021451de" 459 class="qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--pc_logo qk-hidden--mobile" 460 style="width: auto; height: 52px;" 461 alt="" 462 height="52" 463 width="auto" 464 > 465 </a> 466 </nav> 467 468 <!-- logo end --> 469 <!-- tool-nav start --> 470 471 <!-- cyb_snippet tool_nav start --> 472 473 474 475 476 477 478<nav class="tool-nav qk-pos--rel qk-float--r qk-display--flex"> 479 <ul class="link_shelf_top qk-display--flex qk-flex--row qk-justify--end qk-align--center qk-pos--abs qk-r--0"> 480 481 482 <!-- member --> 483 484 <li class="customer_account qk-pos--rel qk-pd--05"> 485 <div class="dropdown qk-pos--static"> 486 <div class="qk-cursor--pointer" data-toggle="dropdown"> 487 <div data-icon-type="custom_icon_type_account"></div> 488 <span class="text"></span> 489 </div> 490 <div class="member qk-dropdown_menu dropdown-menu qk-pos--abs qk-r--0 qk-bd--default qk-bd--product_border qk-bg--theme_bg" role="menu"> 491 <ul id="customer-logined-menu" style="display: none"> 492 <li> 493 <div class="qk-fs--body qk-text--heading"> 494 <p class="customer-name qk-whitespace-break-spaces"></p> 495 <p>æ¨å¥½ï¼</p> 496 </div> 497 </li> 498 </ul> 499 <ul id="customer-not-login-menu"> 500 <li class="button qk-text--center"> 501 <a href="/account/login" class="btn-login qk-btn qk-btn--lg qk-btn--primary qk-w--100">æå¡ç»å ¥</a> 502 </li> 503 <li class="button qk-text--center"> 504 <a href="/account/signup" class="btn-orders qk-btn qk-btn--lg qk-btn--secondary qk-w--100 qk-bg--transparent">è¨»åæ°æå¡</a> 505 </li> 506 </ul> 507 <span class="menu-bd qk-bd_t--default qk-bd--product_border"></span> 508 <ul class="member-menu qk-bd_t--default qk-bd--product_border"> 509 <li class="qk-bg--mask_hover qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--bg"> 510 <a href="/account/index" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">æç帳æ¶</a> 511 </li> 512 <li class="qk-bg--mask_hover qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--bg"> 513 <a href="/account/orders" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">è¨å®æ¥è©¢</a> 514 </li> 515 <li class="qk-bg--mask_hover qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--bg"> 516 <a href="/account/coupons" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">å°å±¬åªæ å¸</a> 517 </li> 518 <li class="qk-bg--mask_hover qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--bg"> 519 <a href="/account/tracking_items" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">æ¶èæ¸ å®</a> 520 </li> 521 <li class="qk-bg--mask_hover qk-tst qk-tst_dur--15 qk-tst_timing--ease_io qk-tst_prop--bg customer-logout-li" style="display: none"> 522 <a href="/account/logout" class="qk-fs--body qk-text--heading qk-w--100 qk-display--il_bk">æå¡ç»åº</a> 523 </li> 524 </ul> 525 </div> 526 </div> 527 </li> 528 529 <!-- for money symbol --> 530 <div id="money-symbol" data-money-symbol="NT${{amount_no_decimals}}" hidden></div> 531 <!-- cart --> 532 533 <li class="cart qk-pos--rel qk-pd--05"> 534 <!--é»è ¦ççè³¼ç©è»é¸å®--> 535 <div class="dropdown qk-pos--static"> 536 <div data-toggle="dropdown" class="shopcart qk-cursor--pointer" > 537 <div data-icon-type="custom_icon_type_cart"></div>
538 <span class="global-cart-count qk-circle qk-circle--sm qk-bg--accent qk-text--white qk-vert--mid qk-pos--abs qk-bd" style="display: none;">0</span> 539 <span class="global-cart-loading"></span> 540 </div> 541 <div class="qk-dropdown_menu dropdown-menu qk-pos--abs qk-r--0 qk-bd--default qk-bd--product_border qk-bg--theme_bg" role="menu"> 542 <div class="cart_list global-cart-item-list custom-scrollbar qk-of_x--hidden qk-of_y--scroll qk-of_y--overlay qk-display--flex qk-flex--column qk-justify--between three_to_four_scale"></div> 543 <p class="cart_empty qk-fs--body qk-text--heading qk-text--center">ç®åçè³¼ç©è»æ¯ç©ºçï¼</p> 544 <ul> 545 <li class="button qk-text--center"> 546 <a class="btn-checkout qk-btn qk-btn--lg qk-btn--primary qk-w--100" href="/cart" style="display: none">ç«å³è³¼è²·</a> 547 <a class="btn-tracking qk-btn qk-btn--lg qk-btn--secondary qk-w--100 qk-bg--transparent" href="/account/tracking_items">å徿¶èæ¸ å®</a> 548 </li> 549 </ul> 550 </div> 551 </div> 552 </li> 553 554 <!-- search --> 555 556 <li class="search qk-pos--rel qk-pd--05" id="search-icon"> 557 <div class="dropdown qk-pos--static"> 558 <div class="qk-cursor--pointer" data-toggle="dropdown"> 559 <div data-icon-type="custom_icon_type_search"></div> 560 </div> 561 <div class="qk-dropdown_menu dropdown-menu qk-pos--abs qk-r--0 qk-bd--default qk-bd--product_border qk-bg--theme_bg" role="menu"> 562 <div class="search-area qk-display--flex qk-flex--row qk-justify--start qk-align--center qk-vert--mid"> 563 <form action="/search" class="form-inline qk-search_form qk-display--flex qk-justfify--between qk-align--center qk-flex--1"> 564 <input class="search-input form-control qk-inputbox qk-inputbox--lg qk-flex--1 qk-w--100 qk-bg--transparent qk-text--heading" type="search" placeholder="æå°" aria-label="Search" name="q" value="" /> 565 <button class="search-btn qk-btn qk-btn--lg qk-btn--primary qk-pd--0" type="submit">æå°</button> 566 </form> 567 </div> 568 </div> 569 </div> 570 </li> 571 572 <!-- express delivery --> 573 574 </ul> 575</nav> 576 577<!-- cyb_snippet tool_nav end --> 578 579 <!-- tool-nav end --> 580 </div> 581 </div> 582 </div> 583 584 <div class="header_nav qk-bg--nav_menu_bg"> 585 <div class="qk-pd_x--15"> 586 <div class="qk-pos--relative center"> 587 <!-- main-nav start --> 588 <nav class="main_nav qk-display--init"> 589 <!-- cyb_snippet _main_nav_skeleton start --><ul 590 class="main_nav_skeleton link_shelf_top qk-display--flex qk-flex--row qk-flex--wrap qk-justify--center qk-align--center qk-body" 591 style="justify-content: center; visibility: hidden;" 592 aria-hidden="true" 593 ><span> 594 <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><span class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--default">åå總覽</span></li> 595 </span><span> 596 <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/pages/about-us" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">éæ¼è²ç¹</a></li> 597 </span><span> 598 <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/pages/warranty-service" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">ä¿åºè¨»å</a></li> 599 </span><span> 600 <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/pages/repair-instructions" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">ç¶ä¿®èªªæ</a></li> 601 </span><span> 602 <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/blogs/headphone-knowledge" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">è³æ©ç¥è</a></li> 603 </span><span> 604 <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/blogs/instruction-manual" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">èªªææ¸</a></li> 605 </span><span> 606 <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/pages/faq" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">常è¦åé¡</a></li> 607 </span><span> 608 <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/contact" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">è¯çµ¡è²ç¹</a></li> 609 </span><span> 610 <li class="dropdown qk-dropdown_wrapper qk-pos--rel"><a href="/pages/spearx-app" class="qk-display--bk qk-fs--body qk-text--nav_menu_text qk-text--accent_hover qk-cursor--pointer">SpearX APP</a></li> 611 </span></ul><!-- cyb_snippet _main_nav_skeleton end --> 612 </nav>
613 <!-- main-nav end --> 614 </div> 615 </div> 616 </div> 617 618 </div> 619 620 <div class="qk-hidden--pc "> 621 <!-- mobile-nav start --> 622 <nav class="mobile-nav qk-bg--nav_logo_bg"> 623 <ul class="qk-display--flex qk-flex--row qk-justify--between qk-align--center qk-pd_x--05 qk-pd_y--0"> 624 <!-- menu --> 625 626 <li class="sidebar-menu-icon drawer-toggle qk-text--center qk-pd_x--05 qk-pd_y--0 qk-display--flex qk-align--center"> 627 <div data-icon-type="custom_icon_type_menu"></div> 628 </li> 629 630 <!-- logo --> 631 632 <li class="logo qk-mg_r--auto qk-pd_x--05 qk-pd_y--0"> 633 634 <a href="/" class="qk-display--il_flex qk-align--center qk-h--100 qk-hidden--phone"> 635 <img 636 src="//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2OTUyMDEzNThfb3JpLnBuZy5wbmciXV0.png?sha=6f96f2e7021451de" 637 height="25" 638 width="auto" 639 alt="" 640 > 641 </a> 642 643 644 <a href="/" class="qk-display--il_flex qk-align--center qk-h--100 qk-hidden--tablet"> 645 <img 646 src="//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2OTUyMDEzNThfb3JpLnBuZy5wbmciXV0.png?sha=6f96f2e7021451de" 647 height="25" 648 width="auto" 649 alt="" 650 > 651 </a> 652 653 </li> 654 655 656 <!-- search --> 657 658 <li class="search qk-text--center qk-pd_x--05 qk-pd_y--0 qk-display--flex qk-align--center "> 659 <div class="dropdown qk-pos--static qk-text--center"> 660 <div class="qk-cursor--pointer" data-toggle="dropdown"> 661 <div data-icon-type="custom_icon_type_search"></div> 662 </div> 663 <div 664 class="qk-dropdown_menu dropdown-menu qk-w--100vw qk-bg--theme_bg qk-bd--default qk-bd--product_border qk-mg--0" 665 role="menu" 666 > 667 <div class="search-area qk-display--flex qk-flex--row qk-justify--start qk-align--center qk-sp_bt--5 qk-w--100"> 668 <form action="/search" class="form-inline qk-display--flex qk-justfify--center qk-flex--1"> 669 <div class="form-inline qk-search_form qk-display--flex qk-justfify--center qk-align--center qk-flex--1"> 670 <input 671 class="form-control qk-flex--1 qk-inputbox qk-inputbox--lg qk-bg--transparent qk-text--heading" 672 type="search" 673 placeholder="æå°" 674 aria-label="Search" 675 name="q" 676 value="" 677 > 678 <button class="search-btn qk-btn qk-btn--lg qk-btn--primary qk-pd--0" type="submit"> 679 æå° 680 </button> 681 </div> 682 </form> 683 </div> 684 </div> 685 </div> 686 </li> 687 688 <!-- express delivery --> 689 690 691 </ul> 692 </nav> 693 <!-- mobile-nav end --> 694 </div> 695 696 </header>
696<script> 697 (function () { 698 var isNavbarTransparent = false; 699 700 function measureHeaderOffset() { 701 var header = document.getElementById('header'); 702 if (!header) return null; 703 704 var headerHeight = header.getBoundingClientRect().height; 705 706 if (isNavbarTransparent && window.matchMedia('(min-width: 992px)').matches) { 707 var computerNav = document.querySelector('.computer_nav'); 708 if (computerNav) { 709 headerHeight -= computerNav.getBoundingClientRect().height; 710 } 711 } 712 713 var floatFilter = document.getElementById('float-filter'); 714 var floatFilterHeight = floatFilter 715 ? floatFilter.getBoundingClientRect().height 716 : 0; 717 718 return headerHeight - floatFilterHeight; 719 } 720 721 window.measureHeaderOffset = measureHeaderOffset; 722 723 var offset = measureHeaderOffset(); 724 if (offset !== null) { 725 document.body.style.paddingTop = offset + 'px'; 726 } 727 })(); 728 </script>
728 729 730 <!-- Sidebar --> 731 <nav class="drawer-nav drawer-nav_width qk-bg--nav_menu_bg " role="navigation"> 732 <div class="drawer-menu"> 733 <!-- cyb_snippet side_menu start --> 734 735 736<ul id="index_sidebar_shelf_top" class="sidebar qk-pd_b--1"> 737 738 <li class="logo qk-pos--rel qk-bg--nav_logo_bg qk-pd_x--1 qk-pd_y--05"> 739 <a href="/" class="qk-pd--0"> 740 <img src="//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2OTUyMDEzNThfb3JpLnBuZy5wbmciXV0.png?sha=6f96f2e7021451de" height="32" width="auto" alt="logo"> 741 </a> 742 <button class="drawer-toggle qk-pos--abs qk-bg--transparent qk-pd--0"></button> 743 </li> 744 745 746 747 748 749 <!-- cyb_snippet components/side_menu/menu start --> 750 751 <li class="category_title qk-fs--breadcrumb qk-bd--nav_menu_text qk-text--nav_menu_text qk-bd_b--default qk-fw--500">主é¸å®</li> 752 753 754 755 756 757 <li class="qk-pos--rel qk-pd--0"> 758 <button class="linklist bt-toggle qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-text--nav_menu_text qk-bg--nav_menu_bg qk-pos--rel" data-toggle="collapse" data-target=".collapse_index_sidebar_1" aria-expanded=" true "> 759 760 <span class="qk-cursor--pointer qk-text--nav_menu_text"> åå總覽 </span> 761 762 </button> 763 <ul id="index_sidebar_shelf_second_1" class="collapse_index_sidebar_1 collapse shelf_second show qk-pd--0"> 764 765 766 767 768 <li class="qk-pos--rel qk-pd--0"> 769 770 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/headphone"> 771 å ¨ç½©å¼è³æ© 772 </a> 773 774 </li> 775 776 777 778 779 780 <li class="qk-pos--rel qk-pd--0"> 781 782 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/earphone"> 783 è³éå¼è³æ© 784 </a> 785 786 </li> 787 788 789 790 791 792 <li class="qk-pos--rel qk-pd--0"> 793 794 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/musicheadphones"> 795 鳿¨è³æ© 796 </a> 797 798 </li> 799 800 801 802 803 804 <li class="qk-pos--rel qk-pd--0"> 805 806 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/bluetooth-headphones"> 807 èçè³æ© 808 </a> 809 810 </li> 811 812 813 814 815 816 <li class="qk-pos--rel qk-pd--0"> 817 818 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/sports-waterproof-earphones"> 819 éå鲿°´è³æ© 820 </a> 821 822 </li> 823 824 825 826 827 828 <li class="qk-pos--rel qk-pd--0"> 829 830 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/multimediaheadset"> 831 å¤åªé«è³æ© 832 </a> 833 834 </li> 835 836 837 838 839 840 <li class="qk-pos--rel qk-pd--0"> 841 842 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/collections/spin-off-product"> 843 è³æ©å¨é 844 </a> 845 846 </li> 847 848 849 </ul> 850 </li> 851 852 853 854 855 856 <li class="qk-pos--rel qk-pd--0"> 857 858 <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/pages/about-us">éæ¼è²ç¹</a> 859 860 </li> 861 862 863 864 865 866 <li class="qk-pos--rel qk-pd--0"> 867 868 <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/pages/warranty-service">ä¿åºè¨»å</a> 869 870 </li> 871 872 873 874 875 876 <li class="qk-pos--rel qk-pd--0"> 877 878 <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/pages/repair-instructions">ç¶ä¿®èªªæ</a> 879 880 </li> 881 882 883 884 885 886 <li class="qk-pos--rel qk-pd--0"> 887 888 <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/blogs/headphone-knowledge">è³æ©ç¥è</a> 889 890 </li> 891 892 893 894 895 896 <li class="qk-pos--rel qk-pd--0"> 897 898 <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/blogs/instruction-manual">èªªææ¸</a> 899 900 </li> 901 902 903 904 905 906 <li class="qk-pos--rel qk-pd--0"> 907 908 <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/pages/faq">常è¦åé¡</a> 909 910 </li> 911 912 913 914 915 916 <li class="qk-pos--rel qk-pd--0"> 917 918 <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/contact">è¯çµ¡è²ç¹</a> 919 920 </li> 921 922 923 924 925 926 <li class="qk-pos--rel qk-pd--0"> 927 928 <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--nav_menu_bg qk-text--nav_menu_text" href="/pages/spearx-app">SpearX APP</a> 929 930 </li> 931 932 933
934<script> 935 $('button a').on('click', function(e) {e.stopPropagation()}); 936</script>
936 937 938<!-- cyb_snippet components/side_menu/menu end --> 939 940 941 942 943 <li class="category_account-title qk-bd--nav_menu_text qk-fs--breadcrumb qk-text--nav_menu_text qk-bd_y--default qk-fw--500">帳æ¶</li> 944 <li class="qk-pos--rel qk-pd--0"> 945 <div class="customer-logined-menu qk-display--il_bk qk-w--100 qk-text--left" style="display: none"> 946 <a href="/account/index" class="qk-text--nav_menu_text qk-fw--bold qk-fs--body">æç帳æ¶</a> 947 </div> 948 </li> 949 <li class="qk-pos--rel qk-pd--0"> 950 <div class="customer-logined-menu qk-display--il_bk qk-w--100 qk-text--left" style="display: none"> 951 <a href="/account/orders" class="qk-text--nav_menu_text qk-fw--bold qk-fs--body">è¨å®æ¥è©¢</a> 952 </div> 953 </li> 954 <li class="qk-pos--rel qk-pd--0"> 955 <div class="customer-logined-menu qk-display--il_bk qk-w--100 qk-text--left" style="display: none"> 956 <a href="/account/logout" class="qk-text--nav_menu_text qk-fw--bold qk-fs--body">æå¡ç»åº</a> 957 </div> 958 </li> 959 <li class="qk-pos--rel qk-pd--0"> 960 <a href="/account/login"> 961 <div class="customer-not-login-menu qk-bd--nav_menu_text qk-bg--nav_menu_text customer-not-login-menu_login qk-display--il_flex qk-justify--center qk-align--center qk-w--100 qk-text--center "> 962 <span class="qk-text--nav_menu_bg qk-fw--500 qk-fs--body"> 963 æå¡ç»å ¥ 964 </span> 965 </div> 966 </a> 967 </li> 968 <li class="qk-pos--rel qk-pd--0"> 969 <a href="/account/signup"> 970 <div class="customer-not-login-menu qk-bd--nav_menu_text customer-not-login-menu_signup qk-display--il_flex qk-justify--center qk-align--center qk-w--100 qk-text--center qk-bd--nav_menu_text qk-bd--default"> 971 <span class="qk-text--nav_menu_text qk-fs--body qk-fw--500"> 972 è¨»åæ°æå¡ 973 </span> 974 </div> 975 </a> 976 </li> 977 978 979 980 981 982</ul> 983 984<link href='//cdn1.cybassets.com/frontend/shop/beta_theme/css/sidebar-ec858cfa815323bb.css' rel='stylesheet' type='text/css' media='all' /> 985
986<script> 987 $(document).ready(function(){ 988 // å´éé¸å® 989 if ($('.drawer').length){ 990 $('.drawer').drawer(); 991 $('.bt-toggle').click(function(){ 992 setTimeout(function(){ 993 $('.drawer')[0].iScroll.refresh() 994 },500) 995 }) 996 } 997 }); 998</script>
998 999 1000 1001<!-- cyb_snippet side_menu end --> 1002 1003 </div> 1004 </nav> 1005 <!-- Bottombar --> 1006 1007 <div 1008 id="mobile-bottom-bar" 1009 class="qk-display--flex qk-justify--around qk-bg--nav_logo_bg qk-w--100vw qk-pos--fixed qk-b--0 qk-hidden--pc" 1010 > 1011 <!-- home --> 1012 <div class="qk-display--flex qk-justify--center qk-align--center qk-text--center qk-pd_x--05 qk-pd_y--0 qk-flex--1"> 1013 <a id="home-nav-icon" href="/"> 1014 <div data-icon-type="custom_icon_type_home"></div> 1015 </a> 1016 </div> 1017 <!-- tracking items --> 1018 <div class="qk-display--flex qk-justify--center qk-align--center qk-text--center qk-pd_x--05 qk-pd_y--0 qk-flex--1"> 1019 <a href="/account/tracking_items"> 1020 <div data-icon-type="custom_icon_type_tracking_items" c></div> 1021 </a> 1022 </div> 1023 <!-- cart --> 1024 1025 <div class="qk-display--flex qk-justify--center qk-align--center qk-text--center qk-pd_x--05 qk-pd_y--0 qk-flex--1"> 1026 <a 1027 href="/cart" 1028 class="qk-display--il_flex qk-flex--row qk-justify--center qk-align--center qk-vert--mid qk-pos--rel" 1029 > 1030 <div data-icon-type="custom_icon_type_cart"></div> 1031 <span 1032 class="number global-cart-count qk-circle qk-circle--sm qk-bg--accent qk-text--white qk-text--center qk-vert--mid qk-pos--abs" 1033 style="display: none;" 1034 >0</span 1035 > 1036 </a> 1037 </div> 1038 1039 <!-- member --> 1040 1041 <div class="qk-display--flex qk-justify--center qk-align--center qk-text--center qk-pd_x--05 qk-pd_y--0 qk-flex--1"> 1042 <a id="customer-phone-nav-icon" href="/account/login"> 1043 <div data-icon-type="custom_icon_type_account"></div> 1044 </a> 1045 </div> 1046 1047 </div> 1048 1049 1050 </span> 1051 1052<div id="index-popular-tags"></div> 1053 1054<style id="timer_color"> 1055 :root { 1056 1057 --timer_text: #ffffff; 1058 1059 1060 1061 --timer_bg: #c58787; 1062 1063 } 1064</style> 1065
1066<script> 1067 window.language = {"account_name":"æ¶å","add_cart_error_try_again":"å å ¥è³¼ç©è»æèª¤ï¼è«éæ°å試","add_to_cart":"å å ¥è³¼ç©è»","addcart_rate_limit_desc":"ç§å¾å¯åè©¦ä¸æ¬¡ï¼å»ºè°æ¨åç卿¤é é¢ã","address1":"詳細é貨å°åï¼è·¯/å··/å¼/æ¨","all_filters":"ææç¯©é¸æ¢ä»¶","apply_fail":"ç³è«å¤±æ","apply_return":"é貨ç³è«","apply_return_success":"æ¨çé貨ç³è«å·²æç«","apply_success":"ç³è«æå","arrive_soon":"å³å°å°è²¨","articles_total":"å ± {{ totalArticleCounts }} ç¯æç« ","bank_account":"éè¡å¸³è","bank_branch_name":"åè¡å稱","bonus_redemption":"ç´ å©æè³¼","cancel":"åæ¶","cart_price_total":"çµå¸³éé¡ç´","check_order":"è¨å®æ¥è©¢","choose_branch_bank":"è«é¸æåè¡","choose_return_reason":"è«é¸æé貨åå ","city":"åå¸","common_price":"å¸å¹: ","comply_group_number":"符å {{comply_group_number}} çµåªæ ï¼","confirm":"確èª","confirm_return":"ç³è«é貨","confirm_submit":"確å®éåº","congratulations_for_verify_mobile_success":"æåï¼æ¨å·²æåé©èæ¨çææ©ï¼","contact_form":"è¯çµ¡æå","continue_reading":"ç¹¼çºé±è®","country_placeholder":"è«é¸æåå®¶","coupon_free_shipping":"å é叿æµ","coupon_items":"åªæ 叿æ£é ç®","date_error":"æ¥æé¯èª¤","default_sort":"é è¨æåº","deliver_error":"å¯éååé¯èª¤","discount_detail":"ææ£æç´°","email":"é»åéµä»¶","email_placeholder":"è«è¼¸å ¥æ¨çé»åéµä»¶ï¼ä¾ï¼[email protected]","enter_account_name":"è«è¼¸å ¥æ¶å","enter_bank_account":"è«è¼¸å ¥éè¡å¸³è","enter_return_reason":"è«å¡«å¯«é貨åå ...","error_message":"é©èç°¡è¨ç¼çé¯èª¤ï¼è«ç¨å¾å試ã","fail_operation":"æä½å¤±æ!","filter_button":"篩é¸","filter_no_result":"徿±æï¼ç¡åå符åç¯©é¸æ¢ä»¶","free":"å è²»","gift_price":"å è³¼å¹","gift_purchase":"滿é¡/ä»¶è´","go_check_email":"è«è³ä¿¡ç®±æ¶åä¿¡ä»¶","group_percent_discount":"çµåå §ååæ{{discount}}æ","has_stock":"å°æåº«å ","include_discount_and_shipping_fee":"å«åªæ ææ£èéè²»","invalid_email":"é䏿¯ææçé»åéµä»¶","invalid_name":"å§åçºå¿ å¡«","invalid_phone_number":"è¯çµ¡é»è©±çºå¿ å¡«","invalid_question_content":"åé¡å §å®¹çºå¿ å¡«","keep_shopping":"ç¹¼çºè³¼ç©","keyin_address1":"è«å¡«å¯«è©³ç´°é貨å°åï¼è·¯/å··/å¼/æ¨","keyin_city":"è«è¼¸å ¥åå¸","keyin_zip":"è«è¼¸å ¥éµéåè","less_then_one":"æ¸éä¸å¾å°æ¼1","line_item_quantity":"æ¸éï¼{{ lineItemQuantity }}","literal_points":"é»","login_btn":"æå¡ç»å ¥","mail_send_fail":"ä¿¡ä»¶å¯é失æ","message_confirmation_token_error":"ç°¡è¨é©è碼æèª¤","messenger_error_please_try_again":"ç°¡è¨å¯éç¼çé¯èª¤ï¼è«ç¨å¾å試ã","mobile_number_error":"ææ©è碼æèª¤","name":"å§å","name_placeholder":"è«è¼¸å ¥æ¨çå§å","new_password_is_sent":"å·²éåºæ°å¯ç¢¼","new_product_defect":"æ°åççµ","nn_collection_save_more_money_title":"å¯äº«ï¼è²· {{quantity}} ä»¶ {{price}} å åªæ ","no_stock":"庫åä¸è¶³","notification_enabled":"å·²ç»è¨è£è²¨éç¥","notify_me_when_stock_arrives":"å·²å®å®ï¼è²¨å°éç¥æ","onsale":"ç¹å¹","order_date":"è¨è³¼æ¥æ","order_number":"è¨å®ç·¨è","order_retrun_confirm":"æ¨ç¢ºèªè¦ç³è«é貨?","ori_price":"åå¹","others":"å ¶ä»","over_cart_limit":"æ¸éè¶ é購買ä¸é","over_product_quantity":"æ¸éè¶ é庫å","over_stock_count":"åå庫åå©é¤ {{ count }} ä»¶","over_stock_quantity":"è¶ éåº«åæ¸é","phone_number":"è¯çµ¡é»è©±","phone_number_placeholder":"è«è¼¸å ¥è¯çµ¡é»è©±","piece":"{{quantity}} ä»¶","please_choose_bank":"è«é¸æéè¡","please_choose_product":"è«é¸æå忬¾å¼","please_choose_variant":"è«é¸æå忬¾å¼","please_enter_number":"è«è¼¸å ¥æ¸å","please_reselect":"è«éæ°è¼¸å ¥ç¯©é¸","please_send_and_confirm_verify_code":"è«å ç¼é並確èªç°¡è¨é©è碼","pre_order":"é è³¼åå","price_asc":"广 ¼ç±ä½å°é«","price_desc":"广 ¼ç±é«å°ä½","price_filter":"广 ¼","price_includes_tax":"(å §å«æ¶è²»ç¨ ï¼{{ tax }})","product_content_defect":"ååå §å®¹ä¸å ¨","product_defect":"ååæç¼ºé·","product_limit_buy":"æ¤ååéè³¼ {{ count }} ä»¶","product_rate_limit_btn":"éæ°é²å ¥ååé ","product_rate_limit_desc":"ç§å¾å¯éæ°é²å ¥ååé ï¼å»ºè°æ¨åç卿¤é é¢ã","product_rate_limit_title":"ç®åæ¶è³¼äººæ½®ç¾å¤ï¼è«èå¿çå","product_rate_limit_warn":"è¥é¢éæ¤é é¢ï¼å¯è½æå»¶é·çå¾ æéã","product_sold":"å·²é·å®ï¼{{ productSold }}","products_total":"å ± {{ totalProductCounts }} ä»¶åå","quantity":"æ¸éï¼","quantity_over_product_stock":"æ¸éè¶ éåå庫å","question_content":"åé¡å
1067
§å®¹","question_content_placeholder":"è«è¼¸å
¥åé¡å
§å®¹","question_submit_fail":"ç¼çåé¡ï¼è«ç¨å¾å試","question_submit_success":"åé¡å·²æåéåºï¼æåå°ç¡å¿«èæ¨è¯ç¹«","question_type":"åé¡é¡å","reached_favorable":"å·²éåªæ ","recent_days_sold_desc":"æ¬é±ç±è³£","reenter_password_still_error":"éè¤è¼¸å
¥å¯ç¢¼æèª¤","refund":"鿬¾éé¡","refund_account":"鿬¾å¸³æ¶","refund_info":"鿬¾è³è¨","refund_invoice_check":"æ¬äººåæç¼ç¥¨ä½å»¢æãçæ¥äººé·è²¨éåé²è²¨éåºè²¨ææè®èæå®ãå°å
¨æ¬ç±{{ envoiceCompanyName }}èçï¼ä»¥å©å é鿬¾ä½æ¥ã妿é貨/æè®ï¼å°ç´æ¥éç«æè®å®ä¸å³è³è²¡æ¿é¨é»åç¼ç¥¨æ´åæåå¹³å°åèã","resend_verify_code":"éç¼é©è碼","reset_all_filters":"æ¸
餿æç¯©é¸","reset_filter_button":"æ¸
é¤ç¯©é¸","return":"è¿å","return_address":"é貨å°å","return_email_notification":"é貨ç³è«ä¿¡å·²å¯è³æ¨çä¿¡ç®±","return_info":"é貨è³è¨","return_instruction":"é貨說æ","return_msg_Australia":"1. 妿¶å°ååå¾ï¼ç¼ç¾æççµæç ´æï¼éè¦ç³è«æè²¨æé款ï¼è«ç¡éè³ãæç帳æ¶ãï¼é»æãè¨å®æ¥è©¢ãï¼å¨é¸ææ¬²ç³è«é貨çè¨å®ä¸ï¼é»æãç³è«é貨ãã\u003cbr\u003e 2. æ¶å°é貨ç³è«å¾ï¼æåæè¯ç¹«æ¨ï¼ä¸¦ååé貨æµç¨ãå¦ææ¨æä»»ä½é貨åé¡ï¼æ¨å¯ä»¥å¨ãè¨å®æ¥è©¢ãï¼å¨é¸ææ¬²ç³è«é貨çè¨å®æç´°ï¼çä¸åçç´éã è«ä¸è¦èªè¡é貨ã\u003cbr\u003e 3. éæè²¨æï¼è«ä¿æåå
è£å®æ´ï¼å
æ¬è³¼è²·çååãé
ä»¶ãè´åçï¼ã\u003cbr\u003e 4. 符åéè²¨è³æ ¼å¾ï¼ååºæåä¾ç
§æ¨ç仿¬¾æ¹å¼é款ã\u003cbr\u003e 5. 詳細çé貨è¦å®èæµç¨èªªæï¼è«å鱿¬åºçé貨æ¿çã\u003cbr\u003e","return_msg_Japan":"1. 妿¶å°ååå¾ï¼ç¼ç¾æççµæç ´æï¼éè¦ç³è«æè²¨æé款ï¼è«ç¡éè³ãæç帳æ¶ãï¼é»æãè¨å®æ¥è©¢ãï¼å¨é¸ææ¬²ç³è«é貨çè¨å®ä¸ï¼é»æãç³è«é貨ãã\u003cbr\u003e 2. æ¶å°é貨ç³è«å¾ï¼æåæè¯ç¹«æ¨ï¼ä¸¦ååé貨æµç¨ãå¦ææ¨æä»»ä½é貨åé¡ï¼æ¨å¯ä»¥å¨ãè¨å®æ¥è©¢ãï¼å¨é¸ææ¬²ç³è«é貨çè¨å®æç´°ï¼çä¸åçç´éã è«ä¸è¦èªè¡é貨ã\u003cbr\u003e 3. éæè²¨æï¼è«ä¿æåå
è£å®æ´ï¼å
æ¬è³¼è²·çååãé
ä»¶ãè´åçï¼ã\u003cbr\u003e 4. 符åéè²¨è³æ ¼å¾ï¼ååºæåä¾ç
§æ¨ç仿¬¾æ¹å¼é款ã\u003cbr\u003e 5. 詳細çé貨è¦å®èæµç¨èªªæï¼è«å鱿¬åºçé貨æ¿çã\u003cbr\u003e","return_msg_Japan_to_Taiwan":"1. 妿¶å°ååå¾ï¼ç¼ç¾æççµæç ´æï¼éè¦ç³è«æè²¨æé款ï¼è«ç¡éè³ãæç帳æ¶ãï¼é»æãè¨å®æ¥è©¢ãï¼å¨é¸ææ¬²ç³è«é貨çè¨å®ä¸ï¼é»æãç³è«é貨ãã\u003cbr\u003e 2. æ¶å°é貨ç³è«å¾ï¼æåæè¯ç¹«æ¨ï¼ä¸¦ååé貨æµç¨ãå¦ææ¨æä»»ä½é貨åé¡ï¼æ¨å¯ä»¥å¨ãè¨å®æ¥è©¢ãï¼å¨é¸ææ¬²ç³è«é貨çè¨å®æç´°ï¼çä¸åçç´éã è«ä¸è¦èªè¡é貨ã\u003cbr\u003e 3. éæè²¨æï¼è«ä¿æåå
è£å®æ´ï¼å
æ¬è³¼è²·çååãé
ä»¶ãè´åçï¼ã\u003cbr\u003e 4. 符åéè²¨è³æ ¼å¾ï¼ååºæåä¾ç
§æ¨ç仿¬¾æ¹å¼é款ã\u003cbr\u003e 5. 詳細çé貨è¦å®èæµç¨èªªæï¼è«å鱿¬åºçé貨æ¿çã\u003cbr\u003e","return_msg_SEA":"1. 妿¶å°ååå¾ï¼ç¼ç¾æççµæç ´æï¼éè¦ç³è«æè²¨æé款ï¼è«ç¡éè³ãæç帳æ¶ãï¼é»æãè¨å®æ¥è©¢ãï¼å¨é¸ææ¬²ç³è«é貨çè¨å®ä¸ï¼é»æãç³è«é貨ãã\u003cbr\u003e 2. æ¶å°é貨ç³è«å¾ï¼æåæè¯ç¹«æ¨ï¼ä¸¦ååé貨æµç¨ãå¦ææ¨æä»»ä½é貨åé¡ï¼æ¨å¯ä»¥å¨ãè¨å®æ¥è©¢ãï¼å¨é¸ææ¬²ç³è«é貨çè¨å®æç´°ï¼çä¸åçç´éã è«ä¸è¦èªè¡é貨ã\u003cbr\u003e 3. éæè²¨æï¼è«ä¿æåå
è£å®æ´ï¼å
æ¬è³¼è²·çååãé
ä»¶ãè´åçï¼ã\u003cbr\u003e 4. 符åéè²¨è³æ ¼å¾ï¼ååºæåä¾ç
§æ¨ç仿¬¾æ¹å¼é款ã\u003cbr\u003e 5. 詳細çé貨è¦å®èæµç¨èªªæï¼è«å鱿¬åºçé貨æ¿çã\u003cbr\u003e","return_msg_Taiwan":"1. æ¶å°ååå¾å¦æç¼ç¾ççµæç ´æçæ³ï¼éè¦è¾¦çææè²¨ï¼è«æ¼æ¶å°è²¨å¾7天å
§ç»å
¥ãæç帳æ¶ãé é¢é»é¸ãç³è«é貨ãã\u003cbr\u003e 2. æ¶å°ååå¾å¯äº«æ7天å
è²»éè³
1067æï¼å«ä¾åæ¥ï¼ãéæè²¨æè«ä¿æåå
è£ååç宿´ï¼å
å«è³¼è²·ååï¼éä»¶ï¼è´åçï¼ã\u003cbr\u003e 3. æ¶å°ç³è«å¾ï¼æåå°èæ¨è¯ç¹«ååååãè¥æä»»ä½é貨åé¡ï¼æ¨å¯ä»¥å¨ãè¨å®æç´°ãä¸ï¼é»é¸ãæè¦è©¢åãï¼è«å¿èªè¡å¯åååã\u003cbr\u003e 4. ç¶ä½ ç³è«é貨å¾ï¼è«åå°æ¬ç³è«å®é¨ååä¸èµ·å¯åã\u003cbr\u003e 5. æ¶å°æ¨çé貨åå並審æ¥ééå¾ï¼å°æ¼7åå·¥ä½å¤©å
§é款è³ä½ ç鿬¾å¸³æ¶ã\u003cbr\u003e","return_msg_USA":"1. 妿¶å°ååå¾ï¼ç¼ç¾æççµæç ´æï¼éè¦ç³è«æè²¨æé款ï¼è«ç¡éè³ãæç帳æ¶ãï¼é»æãè¨å®æ¥è©¢ãï¼å¨é¸ææ¬²ç³è«é貨çè¨å®ä¸ï¼é»æãç³è«é貨ãã\u003cbr\u003e 2. æ¶å°é貨ç³è«å¾ï¼æåæè¯ç¹«æ¨ï¼ä¸¦ååé貨æµç¨ãå¦ææ¨æä»»ä½é貨åé¡ï¼æ¨å¯ä»¥å¨ãè¨å®æ¥è©¢ãï¼å¨é¸ææ¬²ç³è«é貨çè¨å®æç´°ï¼çä¸åçç´éã è«ä¸è¦èªè¡é貨ã\u003cbr\u003e 3. éæè²¨æï¼è«ä¿æåå
è£å®æ´ï¼å
æ¬è³¼è²·çååãé
ä»¶ãè´åçï¼ã\u003cbr\u003e 4. 符åéè²¨è³æ ¼å¾ï¼ååºæåä¾ç
§æ¨ç仿¬¾æ¹å¼é款ã\u003cbr\u003e 5. 詳細çé貨è¦å®èæµç¨èªªæï¼è«å鱿¬åºçé貨æ¿çã\u003cbr\u003e","return_product":"é貨åå","return_reason":"é貨åå ","save_more_money_discount":"å¯äº« {{discount}} æåªæ ","save_more_money_dollar":"å¯ç {{dollar}}","search_article_label":"æç« æå°çµæ ({{ totalArticleCounts }})","search_no_result":"徿±æï¼æ¾ä¸å° {{ queryString }} è«éæ°è¼¸å
¥æå°ã","search_product_label":"ååæå°çµæ ({{ totalProductCounts }})","search_total":"æå° {{ queryString }} çµæå
± {{ totalSearchCount }} ç","select_sort_by":"鏿æåºæ¹å¼","sell_from_asc":"ä¸å¸æ¥æèå°æ°","sell_from_desc":"ä¸å¸æ¥ææ°å°è","send_too_many_times_try_again_later":"ç¼é次æ¸éå¤ï¼è«ç¨å¾å試","sending_msg_few_minutes_get":"ç°¡è¨ç¼éä¸ï¼å¹¾åé徿¨å°æ¶å°é©è碼","shipping_fee":"éè²»","sold_out":"å·²å®å®","state_placeholder":"è«é¸æå·/ç","submit":"éåº","subtotal":"å°è¨","success_operation":"æä½æå!","successfully_copy_tracking_number":"å·²æåè¤è£½ä½ çç©æµå®è","system_busy_try_again":"系統å¿ç¢ï¼è«ç¨å¾å試","tax":"ç¨
é¡","thanks_for_advise":"è¬è¬æ¨çå¯
1067¶è²´æè¦","thanks_you_have_signed_up":"è¬è¬æ¨å·²è¨»å","total_bonus_redemption":"ç¸½ç´ å©æè³¼é»æ¸","tw_city_placeholder":"è«é¸æç¸£å¸","tw_district_placeholder":"è«é¸æéé®å¸å","unreach_favorable":"æªéåªæ ","verification_error_please_correct":"é©èæèª¤è«ä¿®æ£","verify_success":"é©èç¢¼ç¢ºèªæå","view_product":"æ¥çåå","vip_shipping_free":"VIPå éè²»","zip":"éµéåè","suggested_range":"建è°åé:","periodic_order_label":"宿å®é¡"} 1068 $(document).ready(function(){ 1069 if(window.location.pathname != '' && window.location.pathname != '/' ){ 1070 document.getElementById('index-popular-tags').style.display = 'none' 1071 } 1072 // åæ¸è¨æ 1073 1074 1075 function adjustContentTop() { 1076 const offset = window.measureHeaderOffset(); 1077 if (offset === null) return; 1078 $("body").css({ "padding-top": offset + "px" }); 1079 } 1080 1081 window.adjustContentTop = adjustContentTop; 1082 1083 // navbarè¨å®éæ 1084 1085 1086 // Call it first once DOM is ready to prevent CLS 1087 adjustContentTop(); 1088 1089 // å»¶é²åå§åï¼çå¾ app banner åå§å宿 1090 $(window).on("resize", adjustContentTop); 1091 1092 // ä½¿ç¨ setTimeout ç¢ºä¿ banner çæ å·²ç¶ç¢ºå® 1093 $(window).on("load", function() { 1094 setTimeout(function() { 1095 adjustContentTop(); 1096 }, 200); // 給 banner è¶³å¤ æéåå§å 1097 }); 1098 1099 $('img.header_banner').on('load', adjustContentTop); 1100 1101 window.renderNavbarSection('.main_nav', { 1102 navbarCollections: null, 1103 navbarItems: [{"id":125466,"title":"åå總覽","url":"主é¸å®ä¸æç¾¤çµ","item_type":"linklist","subtitle":null,"icon_image_url":null,"menuItems":[{"id":708970,"title":"å ¨ç½©å¼è³æ©","url":"/collections/headphone","item_type":"collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":708971,"title":"è³éå¼è³æ©","url":"/collections/earphone","item_type":"collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":708972,"title":"鳿¨è³æ©","url":"/collections/musicheadphones","item_type":"collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":708973,"title":"èçè³æ©","url":"/collections/bluetooth-headphones","item_type":"collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":708974,"title":"éå鲿°´è³æ©","url":"/collections/sports-waterproof-earphones","item_type":"collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":708975,"title":"å¤åªé«è³æ©","url":"/collections/multimediaheadset","item_type":"collection","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":708976,"title":"è³æ©å¨é","url":"/collections/spin-off-product","item_type":"collection","subtitle":null,"icon_image_url":null,"menuItems":null}]},{"id":105090,"title":"éæ¼è²ç¹","url":"/pages/about-us","item_type":"page","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":463081,"title":"ä¿åºè¨»å","url":"/pages/warranty-service","item_type":"page","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":462814,"title":"ç¶ä¿®èªªæ","url":"/pages/repair-instructions","item_type":"page","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":295146,"title":"è³æ©ç¥è","url":"/blogs/headphone-knowledge","item_type":"blog","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":855414,"title":"èªªææ¸","url":"/blogs/instruction-manual","item_type":"blog","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1308017,"title":"常è¦åé¡","url":"/pages/faq","item_type":"page","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":105091,"title":"è¯çµ¡è²ç¹","url":"/contact","item_type":"contact","subtitle":null,"icon_image_url":null,"menuItems":null},{"id":1968828,"title":"SpearX APP","url":"/pages/spearx-app","item_type":"page","subtitle":null,"icon_image_url":null,"menuItems":null}], 1104 settings: { 1105 menuDisplayStyle: "three_dimension_menu", 1106 pcLogoImgUrl: "//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2OTUyMDEzNThfb3JpLnBuZy5wbmciXV0.png?sha=6f96f2e7021451de", 1107 mobileLogoImgUrl: "//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE2OTUyMDEzNThfb3JpLnBuZy5wbmciXV0.png?sha=6f96f2e7021451de", 1108 navbarDisplayStyle: "displayDefault", 1109 } 1110 } 1111 ); 1112 1113 1114 // for link menu 1115 const linkMenuElement = document.querySelector('.link-nav'); 1116 const data = [] 1117 data.forEach((item) => { 1118 const wrapper = document.createElement('a'); 1119 const link = document.createElement('ul'); 1120 1121 wrapper.href = item.url; 1122 link.textContent = item.title; 1123 link.classList.add('link-item'); 1124 1125 wrapper.appendChild(link); 1126 linkMenuElement.appendChild(wrapper); 1127 }); 1128 1129 // for safe-area space on iOS devices 1130 const userAgent = navigator.userAgent; 1131 const isIOS = /iPad|iPhone|iPod/.test(userAgent) && !window.MSStream; 1132 const isLiff = /Line\/[\d.]+/i.test(userAgent); 1133 const $mobileBottomBar = $('#mobile-bottom-bar'); 1134 1135 if ($mobileBottomBar.length && isIOS && isLiff) { 1136 $mobileBottomBar.addClass('is-ios-liff'); 1137 } 1138 }); 1139 document.addEventListener('DOMContentLoaded', function() { 1140 window.getCartAmount = function() { 1141 return parseInt($('.global-cart-count').html()); 1142 }; 1143 }); 1144</script>
1144 1145
1146<script src='//cdn1.cybassets.com/frontend/shop/beta_theme/js/navbar-ec858cfa815323bb.js' type='text/javascript'></script>
vendor: 1 bytes, line 1146
1146
1147<script src='//cdn1.cybassets.com/frontend/shop/beta_theme/js/currencies-ec858cfa815323bb.js' type='text/javascript'></script>
1147 1148<!-- cyb_snippet i18n_modal start --> 1149 1150 1151<!-- cyb_snippet i18n_modal end --> 1152<!-- cyb_snippet _load_fonts start -->
1153<script src='//cdn1.cybassets.com/frontend/shop/beta_theme/js/load_fonts-ec858cfa815323bb.js' type='text/javascript'></script>
vendor: 1 bytes, line 1153
1153
1154<script> 1155 document.addEventListener('DOMContentLoaded', function() { 1156 window.loadFontSetting("{'ja':{'value':'Noto Sans JP'},'zh-TW':{'value':'Noto Sans TC'},'en':{'value':'Noto Sans TC'},'zh-CN':{'value':'Noto Sans TC'}}") 1157 }) 1158</script>
1158 1159 1160<!-- cyb_snippet _load_fonts end --> 1161<!-- cyb_snippet _custom_icon start -->
1162<script src='//cdn1.cybassets.com/frontend/shop/navIcon-ec858cfa815323bb.js' type='text/javascript'></script>
1162 1163
1164<script> 1165 (function() { 1166 const iconUrlMap = new Map([ 1167 ['custom_icon_type_home', null], 1168 ['custom_icon_type_tracking_items', null], 1169 ['custom_icon_type_account', null], 1170 ['custom_icon_type_cart', null], 1171 ['custom_icon_type_search', null], 1172 ['custom_icon_type_menu', null] 1173 ]); 1174 const elements = document.querySelectorAll('[data-icon-type]'); 1175 elements.forEach((element, index) => { 1176 const iconAttributes = element.getAttribute('data-icon-type'); 1177 1178 const uniqueId = `icon_${iconAttributes}_${index}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`; 1179 element.id = uniqueId; 1180 window.renderNavCustomIcon(`#${uniqueId}`, { 1181 navIconStyle: "icon_type_default", 1182 customIconUrl: iconUrlMap.get(iconAttributes) || '', 1183 iconAttributes: iconAttributes, 1184 currentTemplate: "collection", 1185 }); 1186 }); 1187 })(); 1188</script>
1188 1189 1190<!-- cyb_snippet _custom_icon end --> 1191 1192 1193 1194 1195 1196
1196<script src='//cdn1.cybassets.com/frontend/shop/announcementBar-ec858cfa815323bb.js' type='text/javascript'></script>
1196 1197 1198 1199 1200 1201 1202
1202<script> 1203 $(document).ready(function() { 1204 window.renderAnnouncementBar('#announcement-bar', { 1205 sectionId: "announcement_bar", 1206 isIndex: false, 1207 }); 1208 }); 1209 </script>
1209 1210 1211 1212 1213 1214 1215 1216 <!-- template --> 1217 <div id="template" style="flex:1 0 auto; background-color: var(--theme_bg);"> 1218 1219 1220 1221<!-- cyb_snippet breadcrumb start --> 1222 1223<link href='//cdn1.cybassets.com/frontend/shop/beta_theme/css/breadcrumb-ec858cfa815323bb.css' rel='stylesheet' type='text/css' media='all' /> 1224 1225 1226<div id="site_path" class="qk-bd_b--default qk-bd--product_border"> 1227 <!-- mobile: toggle button (hidden on PC) --> 1228 <div class="qk-container qk-hidden--pc"> 1229 <div class="breadcrumb qk-bg--theme_bg qk-pd_x--0 qk-mg--0 qk-fs--breadcrumb"> 1230 <button 1231 class="bt-toggle qk-bg--theme_bg qk-pd_x--0 qk-w--100 qk-text--left qk-bd--none qk-pos--rel collapsed" 1232 data-toggle="collapse" 1233 data-target=".breadcrumb-content" 1234 > 1235 <a href="/" class="qk-text--text"> 1236 <i class="fas fa-home"></i> 1237 </a> 1238 </button> 1239 </div> 1240 </div> 1241 <!-- breadcrumb nav: single DOM, PC always visible, mobile as collapse dropdown --> 1242 <div class="breadcrumb-content qk-bg--theme_bg collapse"> 1243 <div class="qk-container"> 1244 <!-- cyb_snippet breadcrumb_nav start --> 1245<!-- 主é¡çå麵å å± --> 1246<nav aria-label="breadcrumb"> 1247 <ol 1248 class="breadcrumb qk-bg--theme_bg qk-pd_x--0 qk-mg--0 qk-fs--breadcrumb" 1249 itemscope 1250 itemtype="http://schema.org/BreadcrumbList" 1251 > 1252 1253 <li 1254 class="breadcrumb-item 1255 1256 " 1257 itemprop="itemListElement" 1258 itemscope itemtype="http://schema.org/ListItem"> 1259 <!-- home --> 1260 1261 <a href="/" class="qk-text--text" itemprop="item"> 1262 <i class="fas fa-home"></i> 1263 <span class="qk-display--none" itemprop="name">é¦é </span> 1264 </a> 1265 <!-- account --> 1266 1267 <meta itemprop="position" content="1"/> 1268 </li> 1269 1270 <li 1271 class="breadcrumb-item 1272 1273 active " 1274 itemprop="itemListElement" 1275 itemscope itemtype="http://schema.org/ListItem"> 1276 <!-- home --> 1277 1278 <a href="/collections/spin-off-product" class="qk-text--text" itemprop="item"> 1279 <span itemprop="name">è³æ©å¨é</span> 1280 </a> 1281 <!-- bundle discount --> 1282 1283 <meta itemprop="position" content="2"/> 1284 </li> 1285 1286 </ol> 1287</nav>
1288<script> 1289 $(document).ready(function () { 1290 if (!window.liquidHelper || !window.liquidHelper.hasBreadcrumbReferrerEnabled) return; 1291 1292 var $collections = $('[data-breadcrumb-links]'); 1293 if (!$collections.length) return; 1294 1295 var refMatch = document.referrer.match(/\/collections\/([^/?#]+)/); 1296 if (!refMatch || refMatch[1] === 'all') return; 1297 1298 var referrerHandle = decodeURIComponent(refMatch[1]); 1299 1300 function getCollectionHandle(url) { 1301 if (!url) return null; 1302 try { 1303 var pathname = new URL(url, location.origin).pathname; 1304 var parts = pathname.split('/'); 1305 var idx = parts.indexOf('collections'); 1306 if (idx === -1 || !parts[idx + 1]) return null; 1307 return decodeURIComponent(parts[idx + 1]); 1308 } catch (e) { 1309 return null; 1310 } 1311 } 1312 1313 var $link = $collections.find('a').filter(function () { 1314 return getCollectionHandle(this.href) === referrerHandle; 1315 }); 1316 1317 if ($link.length) { 1318 $collections.siblings('a.qk-text--accent[href="#"]').remove(); 1319 $collections.empty().append($link); 1320 } 1321 }); 1322</script>
1322 1323 1324<!-- cyb_snippet breadcrumb_nav end --> 1325 </div> 1326 </div> 1327</div> 1328 1329 1330<!-- cyb_snippet breadcrumb end --> 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340<div id="collection" class="qk-mg_t--3"> 1341 <div class="qk-container"> 1342 <div class="row qk-mg_x--0" > 1343 1344 <!-- ä¸è¬ç¾¤çµé --> 1345 <!-- 群çµç°¡è¿° start --> 1346 1347 <div class="col-md-12"> 1348 <div id="ckeditor" class="collection_description "> 1349 <span class="ckeditor"> 1350 <p>è³æ©é±éé ä»¶</p> 1351 1352 </span> 1353 </div> 1354 </div> 1355 1356 <!-- 群çµç°¡è¿° end --> 1357 <!-- å´éå表 start --> 1358 1359 <div class="col-md-3 qk-hidden--mobile"> 1360 1361 <!-- cyb_snippet side_menu start --> 1362 1363 1364<ul id="collection_menu_shelf_top" class="sidebar qk-pd_b--1"> 1365 1366 1367 1368 1369 1370 <!-- cyb_snippet components/side_menu/menu start --> 1371 1372 1373 1374 1375 1376 <li class="qk-pos--rel qk-pd--0"> 1377 <button class="linklist bt-toggle qk-fw--bold collapsed qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-text--heading qk-bg--theme_bg qk-pos--rel" data-toggle="collapse" data-target=".collapse_collection_menu_1" aria-expanded=" false "> 1378 1379 <span class="qk-cursor--pointer qk-text--heading"> åå總覽 </span> 1380 1381 </button> 1382 <ul id="collection_menu_shelf_second_1" class="collapse_collection_menu_1 collapse shelf_second qk-pd--0"> 1383 1384 1385 1386 1387 <li class="qk-pos--rel qk-pd--0"> 1388 1389 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/collections/headphone"> 1390 å ¨ç½©å¼è³æ© 1391 </a> 1392 1393 </li> 1394 1395 1396 1397 1398 1399 <li class="qk-pos--rel qk-pd--0"> 1400 1401 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/collections/earphone"> 1402 è³éå¼è³æ© 1403 </a> 1404 1405 </li> 1406 1407 1408 1409 1410 1411 <li class="qk-pos--rel qk-pd--0"> 1412 1413 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/collections/musicheadphones"> 1414 鳿¨è³æ© 1415 </a> 1416 1417 </li> 1418 1419 1420 1421 1422 1423 <li class="qk-pos--rel qk-pd--0"> 1424 1425 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/collections/bluetooth-headphones"> 1426 èçè³æ© 1427 </a> 1428 1429 </li> 1430 1431 1432 1433 1434 1435 <li class="qk-pos--rel qk-pd--0"> 1436 1437 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/collections/sports-waterproof-earphones"> 1438 éå鲿°´è³æ© 1439 </a> 1440 1441 </li> 1442 1443 1444 1445 1446 1447 <li class="qk-pos--rel qk-pd--0"> 1448 1449 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/collections/multimediaheadset"> 1450 å¤åªé«è³æ© 1451 </a> 1452 1453 </li> 1454 1455 1456 1457 1458 1459 <li class="qk-pos--rel qk-pd--0"> 1460 1461 <a class="qk-fw--500 qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--accent" href="/collections/spin-off-product"> 1462 è³æ©å¨é 1463 </a> 1464 1465 </li> 1466 1467 1468 </ul> 1469 </li> 1470 1471 1472 1473 1474 1475 <li class="qk-pos--rel qk-pd--0"> 1476 1477 <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/pages/about-us">éæ¼è²ç¹</a> 1478 1479 </li> 1480 1481 1482 1483 1484 1485 <li class="qk-pos--rel qk-pd--0"> 1486 1487 <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/pages/warranty-service">ä¿åºè¨»å</a> 1488 1489 </li> 1490 1491 1492 1493 1494 1495 <li class="qk-pos--rel qk-pd--0"> 1496 1497 <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/pages/repair-instructions">ç¶ä¿®èªªæ</a> 1498 1499 </li> 1500 1501 1502 1503 1504 1505 <li class="qk-pos--rel qk-pd--0"> 1506 1507 <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/blogs/headphone-knowledge">è³æ©ç¥è</a> 1508 1509 </li> 1510 1511 1512 1513 1514 1515 <li class="qk-pos--rel qk-pd--0"> 1516 1517 <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/blogs/instruction-manual">èªªææ¸</a> 1518 1519 </li> 1520 1521 1522 1523 1524 1525 <li class="qk-pos--rel qk-pd--0"> 1526 1527 <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/pages/faq">常è¦åé¡</a> 1528 1529 </li> 1530 1531 1532 1533 1534 1535 <li class="qk-pos--rel qk-pd--0"> 1536 1537 <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/contact">è¯çµ¡è²ç¹</a> 1538 1539 </li> 1540 1541 1542 1543 1544 1545 <li class="qk-pos--rel qk-pd--0"> 1546 1547 <a class="qk-fw--bold qk-display--il_bk qk-w--100 qk-text--left qk-fs--body qk-bg--theme_bg qk-text--heading" href="/pages/spearx-app">SpearX APP</a> 1548 1549 </li> 1550 1551 1552
1553<script> 1554 $('button a').on('click', function(e) {e.stopPropagation()}); 1555</script>
1555 1556 1557<!-- cyb_snippet components/side_menu/menu end --> 1558 1559 1560 1561</ul> 1562 1563<link href='//cdn1.cybassets.com/frontend/shop/beta_theme/css/sidebar-ec858cfa815323bb.css' rel='stylesheet' type='text/css' media='all' /> 1564
1565<script> 1566 $(document).ready(function(){ 1567 // å´éé¸å® 1568 if ($('.drawer').length){ 1569 $('.drawer').drawer(); 1570 $('.bt-toggle').click(function(){ 1571 setTimeout(function(){ 1572 $('.drawer')[0].iScroll.refresh() 1573 },500) 1574 }) 1575 } 1576 }); 1577</script>
1577 1578 1579 1580<!-- cyb_snippet side_menu end --> 1581 1582 1583 </div> 1584 1585 <!-- å´éå表 end --> 1586 <!-- 群çµåå start --> 1587 <div id="collection-content" class="col-lg-9"> 1588 <!-- for SEO:CLS, will be replaced by Vue component --> 1589 <div style="height: 100vh"></div> 1590 </div> 1591 <!-- 群çµåå end --> 1592 1593 </div> 1594 </div> 1595</div> 1596 1597 1598 1599 1600 <!-- cyb_snippet _combo_product_related_items_modal start --><!-- cyb_snippet _combo_product_related_items_modal end --> 1601 <!-- cyb_snippet new_addcart_modal start --> 1602<link href='//cdn1.cybassets.com/frontend/shop/beta_theme/css/vue_product_modal-ec858cfa815323bb.css' rel='stylesheet' type='text/css' media='all' /> 1603 1604<div id="new-addcart-modal" class="container"> 1605 <transition name="modal"> 1606 <product-modal 1607 v-if="showProductModal" 1608 :only-description="onlyDescription" 1609 :product-url="popProductUrl" 1610 :color="color" 1611 :is-collection="isCollection" 1612 :is-show-description="isShowDescription" 1613 :is-quick-buy="isQuickBuy" 1614 :selected-variant-id="selectedVariantId" 1615 :categories="categories" 1616 :call-back="checkoutAddToCartCallback" 1617 ref="productModal" 1618 > 1619 </product-modal> 1620 </transition> 1621</div> 1622 1623<!-- cyb_snippet components/product_modal/product_modal start -->
1624<script type="text/x-template" id="product-modal"> 1625 <div class="modal-mask qk-h--100 qk-w--100 qk-l--0 qk-t--0 qk-pos--fixed" @click="closeModal"> 1626 <div class="modal-content qk-bd--none qk-center qk-bg--theme_bg" :class="{'only-description': onlyDescription}" @click.stop> 1627 <button class="btn-close qk-circle qk-circle--md qk-pos--abs qk-op--100 qk-bg--theme_bg qk-text--heading qk-bd--product_border qk-bd--default" @click="closeModal"></button> 1628 <div class="modal-body custom-scrollbar qk-w--100"> 1629 <div v-if="!isLoading"> 1630 <div id="checkout-product" class="row"> 1631 <div class="col-sm-6 col-xs-4"> 1632 <photo-swiper 1633 :mediaItems="swiperItems" 1634 :current-image-index="currentImageIndex" 1635 :current-variant="currentVariant" 1636 :video-after-image="videoAfterImage" 1637 ></photo-swiper> 1638 </div> 1639 <div class="col-sm-6 col-xs-8"> 1640 <h4 class="qk-fs--hd2 qk-fw--bold qk-text--heading qk-mg--0" v-html="product.title"></h4> 1641 <p class="product_brief qk-text--text qk-fs--body" v-html="product.brief"></p> 1642 <p class="product_slogan qk-text--heading qk-fs--body" v-html="product.slogan"></p> 1643 <div class="swiper_thumbnails" style="margin-bottom: 10px;"> 1644 <swiper-thumbnails 1645 :mediaItems="swiperItems" 1646 :current-image-index="currentImageIndex" 1647 :title="product.title" 1648 @update-current-image-index="(thumbnailIndex) => { currentImageIndex = thumbnailIndex }" 1649 ></swiper-thumbnails> 1650 </div> 1651 1652 <div v-if="!hidePrice" style="margin-bottom: 10px;"> 1653 1654 <span class="price-title qk-fs--body qk-fw--500 qk-text--heading">${ priceTitleTag }</span> 1655 1656 <div> 1657 <span v-html="variantPrice" class="variant-price qk-fs--hd1 qk-fw--bold" :class="[isDiscountPrice ? 'qk-text--discount_price' : 'qk-text--price']"></span> 1658 <del v-html="marketPrice" class="variant-del-price qk-fs--body qk-fw--500 qk-text--text"></del> 1659 </div> 1660 </div> 1661 <div v-if="!onlyDescription" class="controls"> 1662 <div class="variant-quantity qk-display--flex qk-flex--column"> 1663 <div v-if="hasVariant" class="product-variant-options"> 1664 <div v-for="(option, index) in optionInfo" class="product-variant-option" :class="{'product-variant-option--hidden': shouldHideSingleVariantOptions}"> 1665 <div class="advance variant-select-option" v-if="styledShopMenu==='dropDownType'"> 1666 1667 <label>${option.name}</label> 1668 <svg height="20" width="20" viewBox="0 0 20 20" aria-hidden="true" xmlns="http://www.w3.org/2000/svg"><path d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"> </path></svg> 1669 <select class="qk-bg--theme_bg" :class="{'select_placeholder-color': currentOption[`option${index + 1}`] === null}" v-show="!isMobileSize" :value="String(currentOption[`option${index + 1}`])" @change="setOption(`option${index + 1}`, $event.target.value, option.types )" @click="onClickSelectModal(option,`option${index + 1}`)"> 1670 <option value="null" class="select_option-hidden">è«é¸æ${option.name}</option> 1671 <option :style="{ visibility : isMobileSize ? 'hidden' : 'visible' }" v-for="(types) in option.types" :disabled="!types.isValid" :value="types.name">${types.name}</option> 1672 </select> 1673 <span class="select_placeholder-color" v-if="currentOption[`option${index + 1}`] === null" v-show="isMobileSize" @click="onClickSelectModal(option,`option${index + 1}`)">è«é¸æ${option.name}</span>
1674 <span v-else :value="currentOption[`option${index + 1}`]" v-show="isMobileSize" @click="onClickSelectModal(option,`option${index + 1}`)" v-html="currentOption[`option${index + 1}`]"></span> 1675 </div> 1676 <advance-option v-else :option-key="'option' + (index + 1)" :option="option" :current-option="currentOption" :toggle-current-option="toggleCurrentOption"/> 1677 </div> 1678 </div> 1679 <div class="product_discounts_list qk-bg--theme_bg qk-bd--default qk-bd--product_border qk-pd--1 qk-mg_b--1" v-show="displayProductDiscountsList && ((displayPeriodicSalesPages && product.showableSalesPages.length > 0) || !!discountsList)"> 1680 <div class="list_block custom-scrollbar qk-of_x--hidden"> 1681 <h4 class="qk-text--heading qk-fs--body">æ¤åååèçåªæ æ´»å 1682 </h4> 1683 <template v-if="displayPeriodicSalesPages"> 1684 <div v-for="salesPage in product.showableSalesPages" class="discount-list"> 1685 <span class="discount-label qk-fs--breadcrumb qk-bd--default qk-bd--accent qk-bg--white qk-display--il_bk qk-text--accent">宿å®é¡ 1686 </span> 1687 <a class="discount-title qk-text--accent qk-fs--body" :href="salesPage.path">${ salesPage.title }</a> 1688 </div> 1689 </template> 1690 <template v-for="discounts in discountsList"> 1691 <div v-for="discount in discounts" class="discount-list"> 1692 <a v-if="discount.url" :href="discount.url" class="discount-title qk-text--accent qk-fs--body"> 1693 ${ discount.title } 1694 </a> 1695 <span v-else class="discount-title qk-text--accent qk-fs--body">${ discount.title }</span> 1696 </div> 1697 </template> 1698 </div> 1699 </div> 1700 <div v-if="showPurchaseControls" class="product-quantity qk-bd--product_border" v-show="!isMobileSize"> 1701 <div class="btn-group qk-w--100" role="group" aria-label="First group"> 1702 <button class="btn add-down qk-bd--default qk-bd--border qk-text--text" type="button" @click="quantityDecrease">ï¼</button> 1703 <input class="btn item-quantity qk-bd--default qk-bd--border qk-w--100 qk-text--heading" type="text" name="quantity" :value="quantity" @change="quantityChange"> 1704 <button class="btn add-up qk-bd--default qk-bd--border qk-text--text" type="button" @click="quantityIncrease">ï¼</button> 1705 </div> 1706 </div> 1707 </div> 1708 <div v-if="showPurchaseControls" class="add-button-wrapper"> 1709 <!-- cyb_snippet _product_modal_button start --> 1710<button 1711 class="btn btn-default add-button qk-cursor--pointer qk-w--100 qk-btn--primary" 1712 :class="{selected: isChoose, adding: adding || isHideAddCartBtn, secondary: isSecondaryBtn, 'qk-btn--disabled': isHideAddCartBtn && isNewNnCollection, 'qk-bd--none': isHideAddCartBtn && isNewNnCollection}" 1713 type="button" 1714 :disabled="isHideAddCartBtn" 1715 @click="addProduct" 1716> 1717 ${ addCartText } 1718</button> 1719 1720<!-- cyb_snippet _product_modal_button end --> 1721 </div> 1722 <div class="product-others qk-fs--body"> 1723 <span class="product-love"> 1724 <a class="btn-love qk-text--text qk-bg--theme_bg qk-bd--default qk-bd--product_border qk-display--il_bk qk-text--center qk-cursor--pointer qk-tst qk-tst_timing--ease_io qk-tst_dur--15" @click="addWishList"> 1725 <svg 1726 width="15" 1727 height="15"
1728 viewBox="0 0 24 24" 1729 fill="none" 1730 xmlns="http://www.w3.org/2000/svg"> 1731 <path 1732 d="M21.3899 4.54287C20.8146 4.01265 20.1366 3.60344 19.3969 3.34002C18.6572 3.0766 17.8711 2.96444 17.0863 3.01034C16.5593 3.01219 16.0362 3.09923 15.5375 3.26802C15.0194 3.44412 14.5265 3.68572 14.071 3.98682C13.6676 4.25092 13.2787 4.53613 12.906 4.84124C12.5762 5.09996 12.2648 5.38092 11.974 5.6821C11.6833 5.38092 11.3719 5.09996 11.042 4.84124C10.6516 4.53452 10.2443 4.24928 9.82221 3.98682C9.3967 3.69278 8.93642 3.45138 8.45163 3.26802C7.93995 3.0948 7.40254 3.0077 6.86175 3.01034C6.07688 2.96365 5.2906 3.07544 4.55076 3.3389C3.81091 3.60236 3.13296 4.01199 2.55813 4.54287C2.02401 5.11052 1.61146 5.77922 1.3453 6.50873C1.07914 7.23825 0.964875 8.01351 1.00937 8.78786C1.01359 9.36893 1.11073 9.94569 1.29719 10.4967C1.45989 11.0166 1.68054 11.517 1.95507 11.9886C2.20373 12.4073 2.47838 12.8104 2.77742 13.1956C3.09266 13.5889 3.32566 13.8601 3.46271 14.0093C3.56921 14.1255 3.6837 14.2343 3.80536 14.3348L11.4395 21.7669C11.5066 21.8412 11.5891 21.9002 11.6813 21.94C11.7736 21.9798 11.8734 21.9994 11.974 21.9975C12.0836 22.0067 12.1938 21.9906 12.296 21.9506C12.3983 21.9106 12.4898 21.8477 12.5634 21.7669L20.1838 14.3484C21.8272 12.9359 22.8376 10.9363 22.9935 8.78786C23.0307 8.0097 22.9078 7.23217 22.6321 6.50246C22.3565 5.77274 21.9339 5.10606 21.3899 4.54287V4.54287Z" 1733 stroke="currentColor" 1734 stroke-width="2" 1735 stroke-linecap="round" 1736 stroke-linejoin="round" /> 1737 </svg> 1738 å å ¥ææ 1739 </a> 1740 </span> 1741 <span class="product_sold qk-text--text" v-if="false"> 1742 <span>å·²é·å®ï¼ 1743 ${ product.totalSold } 1744 ä»¶ 1745 </span> 1746 </span> 1747 <span class="product_bonus qk-text--text" v-if="true"> 1748 æ¤åå ã æé« ãå¯ä»¥ææµç´ å© 1749 <span class="val qk-fw--600 qk-fs--hd2" v-if="currentVariant">${currentVariant.maxUsableBonus}</span> 1750 <span class="val qk-fw--600 qk-fs--hd2" v-else>${maxUsableBonus}</span> 1751 é» 1752 <span v-html="bonusToPrice"/> 1753 </span> 1754 </div> 1755 <div class='product_limit_buy qk-fs--body' v-show="product.minBuy > 0 || product.limitBuy > 0"> 1756 ${limitBuyText} 1757 </div> 1758 </div> 1759 </div> 1760 </div> 1761 <div v-if="isShowDescription" class="row"> 1762 <div class="col-sm-12"> 1763 1764 <div v-if="product.bodyHtml"> 1765 <h5 class="section-heading qk-bd--heading qk-fs--hd2 qk-text--heading"> 1766 ååä»ç´¹ 1767 </h5> 1768 <div class="ckeditor"> 1769 <div v-html="product.bodyHtml"></div> 1770 </div> 1771 </div> 1772 1773 1774 <div v-if="otherDescriptions['product_description_section_spec']"> 1775 <h5 class="section-heading qk-bd--heading qk-fs--hd2 qk-text--heading"> 1776 è¦æ ¼èªªæ 1777 </h5> 1778 <div class="ckeditor"> 1779 <div v-html="otherDescriptions['product_description_section_spec']"></div> 1780 </div> 1781 </div> 1782 1783 1784 </div> 1785 </div> 1786 </div> 1787 <div v-show="isLoading" style="text-align: center; padding-bottom: 20px;"> 1788 <i class="fas fa-spinner fa-spin fa-fw fa-2x"></i> 1789 </div> 1790 </div> 1791 <!-- cyb_snippet _product_modal_button_mobile start --> 1792 <div 1793 v-if="showPurchaseControls" 1794 v-show="isMobileSize" 1795 class="mobile_footer" 1796 :class="{'mobile_footer-z': variantSize > 1 }"> 1797 <div class="product-quantity"> 1798 <div class="btn-group qk-w--100" role="group" aria-label="First group"> 1799 <button class="btn add-down qk-bd--default qk-bd--border qk-text--text" type="button" @click="quantityDecrease">ï¼</button> 1800 <input class="btn item-quantity qk-bd--default qk-bd--border qk-w--100 qk-text--heading" type="text" name="quantity" :value="quantity" @change="quantityChange"> 1801 <button class="btn add-up qk-bd--default qk-bd--border qk-text--text" type="button" @click="quantityIncrease">ï¼</button> 1802 </div> 1803 </div> 1804 <button 1805 v-if="!isLoading && !onlyDescription" 1806 class="btn btn-mobile add-button qk-btn qk-btn--primary qk-btn--lg" 1807 :class="{selected: isChoose, adding: adding || isHideAddCartBtn, 'qk-btn--disabled': isHideAddCartBtn && isNewNnCollection, 'qk-bd--none': isHideAddCartBtn && isNewNnCollection}" 1808 type="button" 1809 :disabled="isHideAddCartBtn" 1810 @click="addProduct"> 1811 ${ addCartText } 1812 </button> 1813</div> 1814<div 1815 class="mobile-modal" 1816 :class="{ 'modal-open': isModalSelectShow && isMobileSize }"> 1817 <div class="mobile_modal-content"> 1818 <div class="modal_close-button"> 1819 <button class="btn-close qk-circle qk-circle--md qk-pos--abs qk-op--100 qk-text--heading qk-bd--product_border qk-bd--default" @click="onChangeModalSelect(false,true)"></button> 1820 </div> 1821 1822 <p>è«é¸æ${modalOption.name}</p> 1823 <div class="modal_select-templete qk-display--flex qk-of_y--auto qk-w--100"> 1824 <div class="options-container"> 1825 <label :class="{'seleced-option': currentOption && currentOption[selectOption] === data.name, 'avoid-clicks':!data.isValid}" v-for="data in modalOption.types" @click="setOption(selectOption, data.name, modalOption.types)">${data.name}</label> 1826 </div> 1827 </div> 1828 <div v-if="variantSize > 1" class="modal_select_footer qk-display--flex"> 1829 <button type="button" class="modal_cancel qk-bd--default qk-btn--secondary qk-bd--button qk-text--button" @click="onChangeModalSelect(false,false)">åæ¶</button> 1830 <button type="button" class="qk-btn qk-btn--primary qk-btn--lg qk-fs--body qk-bd--button qk-test--button_text" @click="onChangeModalSelect(false,true)">宿</button> 1831 </div> 1832 </div> 1833</div> 1834 1835<!-- cyb_snippet _product_modal_button_mobile end --> 1836 </div> 1837 </div> 1838</script>
1838 1839 1840<!-- cyb_snippet components/product_modal/color_image_option start -->
1841<script id="color-image-option" type="text/x-template"> 1842 <div class="color-image qk-display--flex qk-flex--wrap qk-align--center"> 1843 <div class="title">é¡è²</div> 1844 <div 1845 v-for="(imageColor, index) in imageColors" 1846 :class="{ 1847 'focus': !currentOption[optionKey] === option.types[index].name && currentImageIndex === index, 1848 'selected': currentOption[optionKey] === option.types[index].name, 1849 'disabled': !option.types[index].isValid 1850 }" 1851 class="image-option img-flex qk-bd--default qk-bd--transparent qk-display--block qk-pos--rel" 1852 @mouseleave="setCurrentImageIndex(index)" 1853 @mouseover="getOptionImageIndex(index)" 1854 @click="setOption(optionKey, index)" 1855 > 1856 <img v-if="imageColor !== 'noColorImage'" :src="imageColor.large" alt="image"> 1857 <img v-else src="/assets/no-image-large.png" alt="image"> 1858 </div> 1859 </div> 1860</script>
1860 1861
1862<script type="text/javascript"> 1863 $(document).ready(function() { 1864 window.themeHelper.productModalComponents['color-image-option'] = { 1865 template: '#color-image-option', 1866 delimiters: ['${', '}'], 1867 props: { 1868 optionKey: String, 1869 option: Object, 1870 product: Object, 1871 imageColors: Array, 1872 isChoose: Boolean, 1873 currentImageIndex: Number, 1874 setCurrentImageIndex: Function, 1875 getOptionImageIndex: Function, 1876 currentOption: Object, 1877 toggleCurrentOption: Function, 1878 }, 1879 methods: { 1880 setOption: function(optionKey, index) { 1881 const type = this.option.types[index]; 1882 if(type.isValid){ 1883 this.toggleCurrentOption(optionKey, type.name); 1884 } 1885 } 1886 } 1887 }; 1888 }); 1889</script>
1889 1890 1891<!-- cyb_snippet components/product_modal/color_image_option end --> 1892<!-- cyb_snippet components/product_modal/advance_option start -->
1893<script id="advance-option" type="text/x-template"> 1894 <div class="advance"> 1895 <div class="title qk-text--heading qk-fs--body">${option.name}</div> 1896 <div 1897 v-for="type in option.types" 1898 :class="{ 1899 'selected': currentOption[optionKey] === type.name, 1900 'disabled': !type.isValid 1901 }" 1902 @click="setOption(optionKey, type)" 1903 class="option qk-btn qk-bd--button qk-text--button qk-pd_x--1" 1904 > 1905 ${type.name} 1906 </div> 1907 </div> 1908</script>
1908 1909
1910<script type="text/javascript"> 1911 $(document).ready(function() { 1912 window.themeHelper.productModalComponents['advance-option'] = { 1913 template: '#advance-option', 1914 delimiters: ['${', '}'], 1915 props: { 1916 optionKey: String, 1917 option: Object, 1918 product: Object, 1919 currentOption: Object, 1920 toggleCurrentOption: Function, 1921 }, 1922 methods: { 1923 setOption: function(optionKey, type) { 1924 if(type.isValid){ 1925 this.toggleCurrentOption(optionKey, type.name); 1926 } 1927 } 1928 } 1929 }; 1930 }); 1931</script>
1931 1932 1933<!-- cyb_snippet components/product_modal/advance_option end --> 1934 1935<!-- cyb_snippet components/product_modal/photo_swiper start --> 1936 1937
1938<script id="photo-swiper" type="text/x-template"> 1939 <div ref="photoSwiper" id="photo_swiper" class="photos swiper swiper-container"> 1940 <div class="swiper-wrapper"> 1941 <template v-if="hasImage"> 1942 <div v-for="(item, index) in mediaItems" :key="index" class="photo swiper-slide qk-align--center qk-display--flex qk-justify--center qk-vert--text_top three_to_four_scale"> 1943 <video-player v-if="item.url" :video="item" 1944 :video-poster=" !!mediaItems[firstImageIndex] ? mediaItems[firstImageIndex].large : '//cdn1.cybassets.com/img_loading.svg' " 1945 > 1946 </video-player> 1947 <img v-else class="qk-center" :src="item.large" alt="image"/> 1948 </div> 1949 </template> 1950 <div v-else class="photo swiper-slide qk-align--center qk-display--flex qk-justify--center qk-vert--text_top three_to_four_scale"> 1951 <img src="//cdn1.cybassets.com/assets/no-image-large-2b95ea56c455be9ce081d81c14eded925df68bf8fa38809e46f6af8fcdd5f9bc.png" alt="image" /> 1952 </div> 1953 </div> 1954 <div v-show="showBtn" class="photo-prev qk-swiper_btn--prev qk-hidden--mobile qk-swiper_btn qk-swiper_btn--lg qk-swiper_btn--v2 qk-mg_l--05"></div> 1955 <div v-show="showBtn" class="photo-next qk-swiper_btn--next qk-hidden--mobile qk-swiper_btn qk-swiper_btn--lg qk-swiper_btn--v2 qk-mg_l--05"></div> 1956 1957 <div class="photo-pagination qk-bd--default qk-bd--body qk-text--center qk-text--body qk-fs--breadcrumb qk-visible-sm"> 1958 <span class="current-index qk-text--default_dark">${currentImageIndex +1 }</span><span class="pagination-slash">/</span> 1959 <span>${mediaItems.length}</span> 1960 </div> 1961 </div> 1962</script>
1962 1963
1964<script> 1965 $(document).ready(function () { 1966 window.themeHelper.productModalComponents['photo-swiper'] = { 1967 template: '#photo-swiper', 1968 delimiters: ['${', '}'], 1969 props: { 1970 mediaItems: Array, 1971 currentImageIndex: Number, 1972 currentVariant: Object, 1973 videoAfterImage: Boolean, 1974 }, 1975 data: function () { 1976 return { 1977 swiper: {}, 1978 swiperOption: { 1979 preventInteractionOnTransition: true, 1980 rewind: true, 1981 spaceBetween: 5, 1982 slidesPerView: 1, 1983 navigation: { 1984 nextEl: '.photo-next', 1985 prevEl: '.photo-prev' 1986 } 1987 }, 1988 showBtn: true, 1989 isVariantReposition: false, 1990 } 1991 }, 1992 mounted: function() { 1993 this.swiper = new Swiper('#photo_swiper', this.swiperOption); 1994 this.swiper.on('slideChange', this.slideOnChange); 1995 }, 1996 watch: { 1997 currentImageIndex: function() { 1998 this.slideToIndex(); 1999 }, 2000 currentVariant: { 2001 immediate: true, 2002 handler: function() { 2003 this.showBtn = this.mediaItems.length > 1; 2004 this.isVariantReposition = true; 2005 this.$nextTick(() => { 2006 if (this.swiper) { 2007 this.swiper.update(); 2008 this.swiper.slideToLoop(this.initialItemIndex) 2009 this.slideOnChange(); 2010 this.isVariantReposition = false; 2011 } 2012 }); 2013 }, 2014 }, 2015 }, 2016 computed: { 2017 hasImage: function() { 2018 return this.mediaItems.length > 0; 2019 }, 2020 hasVideo: function() { 2021 return this.mediaItems.findIndex(item => !!item.url) !== -1; 2022 }, 2023 variantPhotos: function() { 2024 if (this.currentVariant?.photos?.length) { 2025 return this.currentVariant.photos; 2026 } else { 2027 return null; 2028 } 2029 }, 2030 initialItemIndex: function() { 2031 if (this.hasVideo && !this.videoAfterImage) { 2032 // Focus on photo if "variant with photos" selected, video otherwise 2033 return this.variantPhotos?.length ? 1 : 0; 2034 } else { 2035 // Focus on first photo 2036 return 0; 2037 } 2038 }, 2039 }, 2040 methods: { 2041 slideOnChange: function() { 2042 themeHelper.EventBus.$emit('photoOnChange', this.swiper.realIndex, this.isVariantReposition); 2043 }, 2044 slideToIndex: function() { 2045 if(this.swiper.realIndex != this.currentImageIndex) { 2046 this.swiper.slideToLoop(this.currentImageIndex); 2047 this.swiper.update(); 2048 } 2049 }, 2050 } 2051 }; 2052 }); 2053</script>
2053 2054 2055 2056<!-- cyb_snippet components/product_modal/video_player start -->
2057<script id="video-player" type="text/x-template"> 2058 <div class="videoPlayer__wrapper" @click="handleVideoClick"> 2059 <video 2060 id='modal-video' 2061 class="videoPlayer__video qk-cursor--pointer qk-center" 2062 :poster="videoPoster" 2063 loop defaultMuted muted playsinline webkit-playsinline autoplay 2064 > 2065 <source :src="videoUrl" type="video/mp4"> 2066 <p>ä½ çç覽å¨ä¸æ¯æ´ HTML 5 video</p> 2067 </video> 2068 <button id="modal-video-button" class="videoPlayer__pauseButton"></button> 2069 </div> 2070</script>
2070 2071
2072<script> 2073 $(document).ready(function () { 2074 window.themeHelper.productModalComponents['video-player'] = { 2075 template: '#video-player', 2076 delimiters: ['${', '}'], 2077 props: { 2078 video: Object, 2079 videoPoster: String, 2080 }, 2081 data: function() { 2082 return { 2083 videoElement: null, 2084 buttonElement: null, 2085 }; 2086 }, 2087 mounted: function() { 2088 this.videoElement = $('#modal-video')[0]; 2089 this.buttonElement = $('#modal-video-button'); 2090 this.setVideoVolumeZero(); 2091 this.videoElement.addEventListener('canplay', (event) => { 2092 this.sendGtag('play'); 2093 }, { once: true }); 2094 }, 2095 computed: { 2096 videoUrl: function() { 2097 return this.video.url; 2098 } 2099 }, 2100 methods: { 2101 sendGtag: function(action) { 2102 window.productVideoView && productVideoView(action); 2103 }, 2104 setVideoVolumeZero: function() { 2105 this.videoElement.volume = 0; 2106 }, 2107 handleVideoClick: function() { 2108 if (this.videoElement.paused){ 2109 this.videoElement.play(); 2110 this.sendGtag('play'); 2111 } else { 2112 this.videoElement.pause(); 2113 this.sendGtag('paused'); 2114 } 2115 this.handleVideoButtonDisplay(this.buttonElement, this.videoElement); 2116 }, 2117 handleVideoButtonDisplay: function(button, video) { 2118 button.toggleClass('videoPlayer__playButton', video.paused); 2119 button.toggleClass('videoPlayer__pauseButton', !video.paused); 2120 }, 2121 } 2122 }; 2123 }); 2124</script>
2124 2125 2126<!-- cyb_snippet components/product_modal/video_player end --> 2127 2128<!-- cyb_snippet components/product_modal/photo_swiper end --> 2129<!-- cyb_snippet components/product_modal/swiper_thumbnails start -->
2130<script id="swiper-thumbnails" type="text/x-template"> 2131 <div 2132 v-for="(thumbnail, index) in allThumbnails" 2133 :key="index" 2134 class="product-thumbnail img-flex qk-of--hidden qk-display--il_bk qk-cursor--pointer qk-bd--default qk-bd--transparent three_to_four_scale" 2135 :class="{ focus: index === currentImageIndex }" 2136 @mouseover="updateCurrentImageIndex(index)" 2137 > 2138 <template v-if="thumbnail.isVideo"> 2139 <video class="qk-w--100 qk-h--100" :src="thumbnail.url" defaultMuted playsinline></video> 2140 <button class="videoPlayer__playButton"></button> 2141 </template> 2142 <img v-else :src="thumbnail.url" :alt="title" class="qk-w--100 qk-h--100"> 2143 </div> 2144</script>
2144 2145
2146<script type="text/javascript"> 2147 $(document).ready(function () { 2148 window.themeHelper.productModalComponents['swiper-thumbnails'] = { 2149 template: '#swiper-thumbnails', 2150 delimiters: ['${', '}'], 2151 props: { 2152 title: String, 2153 mediaItems: Array, 2154 currentImageIndex: Number, 2155 }, 2156 emits: ['updateCurrentImageIndex'], 2157 methods: { 2158 updateCurrentImageIndex: function(thumbnailIndex) { 2159 if (thumbnailIndex !== this.currentImageIndex ) { 2160 this.$emit('updateCurrentImageIndex', thumbnailIndex); 2161 } 2162 }, 2163 }, 2164 mounted() { 2165 // can be removed after replacing video thumbnail with img 2166 const thumbnailVideo = $('.product-thumbnail video')[0]; 2167 if (!!thumbnailVideo) { 2168 thumbnailVideo.volume = 0; 2169 const promise = thumbnailVideo.play(); 2170 promise.then(() => { 2171 thumbnailVideo.pause(); 2172 }) 2173 } 2174 }, 2175 computed: { 2176 allThumbnails: function() { 2177 return this.mediaItems.map(item => ({ 2178 isVideo: !!item.url, 2179 url: item.url || item.medium 2180 })); 2181 }, 2182 }, 2183 watch: { 2184 allThumbnails: { 2185 handler(){ 2186 this.updateCurrentImageIndex(this.currentImageIndex); 2187 } 2188 } 2189 } 2190 }; 2191 }); 2192</script>
2192 2193 2194<!-- cyb_snippet components/product_modal/swiper_thumbnails end --> 2195 2196 2197<!-- cyb_snippet _product_modal_js start -->
2198<script type="text/javascript"> 2199 $(document).ready(function() { 2200 var categoryLevels = []; 2201 var productCategoryLevels = null; 2202 var pageMainProductId = null; 2203 window.themeHelper.productModalComponents['product-modal'] = { 2204 template: '#product-modal', 2205 delimiters: [ 2206 '${', '}' 2207 ], 2208 props: { 2209 onlyDescription: Boolean, 2210 cartItems: Array, 2211 groupId: Number, 2212 productUrl: String, 2213 color: String, // unused 2214 collectionId: Number, 2215 categories: Array, 2216 // 夿·æ¯å¦æè²ç¥¨å±é 2217 isCollection: { 2218 type: Boolean, 2219 required: false, 2220 default: false, 2221 }, 2222 // 夿·å å ¥è³¼ç©è»çæ¹æ³ 2223 isNnCollection: Boolean, 2224 isNewNnCollection: Boolean, 2225 isBundleDiscount: Boolean, 2226 2227 // 夿·æ¯å¦é¡¯ç¤ºååæè¿° 2228 isShowDescription: { 2229 type: Boolean, 2230 default: true 2231 }, 2232 2233 // 夿·æ¯å¦çºç«å³è³¼è²· 2234 isQuickBuy: { 2235 type: Boolean, 2236 default: false 2237 }, 2238 selectedVariantId: Number, 2239 callBack: Function 2240 }, 2241 data: function() { 2242 return { 2243 styledShopMenu: "buttonType", 2244 selectOption: '', 2245 selectCurrentStr:'', 2246 isModalSelectShow: false, 2247 modalOption: {}, 2248 adding: false, 2249 currentImageIndex: 0, 2250 _navState: { variantId: null, photoIndex: 0 }, 2251 currentOption: { 2252 option1: null, 2253 option2: null, 2254 option3: null 2255 }, 2256 currentVariant: null, 2257 variantNotifications: null, 2258 currentVariantIndex: null, 2259 product: {}, 2260 isChoose: false, 2261 isLoading: true, 2262 isEmptyClickable: liquidHelper.isEmptyClickable, 2263 quantity: 1, 2264 maxUsableBonus: 0, 2265 isDiscountPrice: false, 2266 displayProductDiscountsList: true, 2267 displayPeriodicSalesPages:false, 2268 discountsList: null, 2269 hasVideoPlugin: false, 2270 videoDisplayLocation: "before", 2271 hasStockNotificationPlugin: true, 2272 isDisplayPriceRange: null, 2273 hasVariantPriceRangePlugin: true, 2274 hasHideSingleVariantOptionsPlugin: false, 2275 } 2276 }, 2277 mounted: function() { 2278 this.getProductDetail(); 2279 $('.custom-scrollbar').addCustomScrollbar(); 2280 themeHelper.EventBus.$on('photoOnChange', this.photoOnChange); 2281 }, 2282 beforeUnmount: function() { 2283 themeHelper.EventBus.$off('photoOnChange', this.photoOnChange); 2284 }, 2285 computed: { 2286 photoUrls: function() { 2287 return this.product.photoUrls.length > 0 2288 ? this.product.photoUrls 2289 : [this.featuredImage]; 2290 }, 2291 photoUrlsMap: function() { 2292 var map = {}; 2293 var urls = this.product.photoUrls; 2294 this.product.photos.forEach(function(photo, index) { 2295 map[photo.photo.id] = urls[index]; 2296 }); 2297 2298 return map; 2299 }, 2300 featuredImage: function() { 2301 return this.product.featuredImage; 2302 }, 2303 swiperPhotos: function() { 2304 if (!this.photoUrls.length) { 2305 return [this.featuredImage]; 2306 } 2307 2308 if (this.currentVariant && this.currentVariant.photos.length) { 2309 var map = this.photoUrlsMap; 2310 return this.currentVariant.photos.map(function(p) { 2311 return map[p.id]; 2312 }); 2313 } 2314 2315 return this.photoUrls; 2316 }, 2317 productVideo: function() { 2318 return this.product.video; 2319 }, 2320 videoAfterImage: function() { 2321 return this.videoDisplayLocation === 'after'; 2322 }, 2323 swiperItems: function() { 2324 const media = [...this.swiperPhotos]; 2325 if ( 2326 this.hasVideoPlugin && this.productVideo.url 2327 ) { 2328 this.videoAfterImage 2329 ? media.push(this.productVideo) 2330 : media.unshift(this.productVideo); 2331 } 2332 return media; 2333 }, 2334 firstImageIndex: function() { 2335 return this.hasVideoPlugin && this.productVideo.url && !this.videoAfterImage 2336 ? 1 2337 : 0 2338 }, 2339 otherDescriptions: function() { 2340 var descriptions = {}; 2341 this.product.otherDescriptions.forEach(function(od) { 2342 descriptions[od.settingName] = od.bodyHtml; 2343 }) 2344 return descriptions 2345 }, 2346 variantOptions: function() { 2347 return themeHelper.variantOptions(this.product); 2348 }, 2349 firstValidVariant: function() { 2350 var self = this; 2351 var result = this.product.variants.find(function(variant) { 2352 // å¢å product modal è¯çµ¡åºå®¶ property 2353 variant.imgUrl = ""; 2354 variant.productTitle = ""; 2355 2356 return variant.available; 2357 }); 2358 2359 return result 2360 ? result 2361 : null; 2362 }, 2363 selectedValidVariant: function() { 2364 var self = this; 2365 var result = this.variantOptions.find(function(variant) { 2366 return variant.id === self.selectedVariantId; 2367 }); 2368 2369 return result 2370 ? result 2371 : null; 2372 }, 2373 totalInventoryQuantity: function(product) { 2374 return themeHelper.totalInventoryQuantity(this.product) 2375 }, 2376 addCartText: function() { 2377 var variants = parseInt(""); 2378 let isRegisteredNotification = this.currentVariant && this.variantNotifications && this.variantNotifications[this.currentVariant.id] 2379 if (this.isNnCollection || this.isBundleDiscount) { 2380 if (this.currentVariant && !themeHelper.variantIsAvailable(this.currentVariant)) { 2381 if (this.currentVariant.inventoryPolicy === 'continue') { 2382 if (this.isNnCollection) { 2383 return this.isChoose && !this.isNewNnCollection 2384 ? 'å·²é è³¼' 2385 : 'é è³¼åå'; 2386 } 2387 } else { 2388 return 'å·²å®å®'; 2389 } 2390 } 2391 if (this.totalInventoryQuantity === 0) { 2392 return 'å·²å®å®'; 2393 } 2394 return this.isChoose && !this.isNewNnCollection 2395 ? 'å·²é¸è³¼' 2396 : 'é¸è³¼'; 2397 } else { 2398 if (this.isQuickBuy) { 2399 if (this.currentVariant && !themeHelper.variantIsAvailable(this.currentVariant)) { 2400 if (this.currentVariant.inventoryPolicy === 'continue'){ 2401 return 'ç«å³é è³¼' 2402 } 2403 return this.hasStockNotificationPlugin 2404 ? (isRegisteredNotification 2405 ? 'å·²ç»è¨è£è²¨éç¥' 2406 : 'å·²å®å®ï¼è²¨å°éç¥æ') 2407 : 'è¯çµ¡åºå®¶' 2408 } 2409 return 'ç«å³è³¼è²·'; 2410 } else { 2411 if (this.currentVariant) { 2412 if (!themeHelper.variantIsAvailable(this.currentVariant)) { 2413 if (this.currentVariant.inventoryPolicy === 'continue'){ 2414 return 'é è³¼åå' 2415 } 2416 return this.hasStockNotificationPlugin 2417 ? (isRegisteredNotification 2418 ? 'å·²ç»è¨è£è²¨éç¥' 2419 : 'å·²å®å®ï¼è²¨å°éç¥æ') 2420 : 'è¯çµ¡åºå®¶' 2421 } 2422 } else { 2423 if (this.totalInventoryQuantity === 0) { 2424 return 'å·²å®å®'; 2425 } 2426 } 2427 return 'å å ¥è³¼ç©è»'; 2428 } 2429 } 2430 }, 2431 cartItem: function() { 2432 if (!this.currentVariant) { 2433 return null 2434 } 2435 return { 2436 id: this.currentVariant.id, 2437 groupId: this.groupId, 2438 productId: this.product.id, 2439 title: this.product.title, 2440 photo: this.currentVariant.imgUrl || this.featuredImage.large, 2441 quantity: this.quantity, 2442 price: this.currentVariant.price, 2443 variant: this.currentVariant, 2444 product: this.product 2445 } 2446 }, 2447 options: function() { 2448 return this.product.options; 2449 }, 2450 optionTypes: function() { 2451 2452 // å æ ¹æè¨å®çvariantsä¾æåº 2453 var self = this; 2454 2455 var option1 = []; 2456 var option2 = []; 2457 var option3 = [];
2458 this.product.variants.forEach(function(item) { 2459 if (item.option1 !== null) { 2460 option1.push(item.option1); 2461 } 2462 if (item.option2 !== null) { 2463 option2.push(item.option2); 2464 } 2465 if (item.option3 !== null) { 2466 option3.push(item.option3); 2467 } 2468 }) 2469 var filteredOptionTypes = []; 2470 this.product.optionTypes.forEach(function(item, index) { 2471 filteredOptionTypes.push(self.getUniqueVariant(eval('option' + ( 2472 index + 1 2473 ))).join(',')); 2474 }); 2475 return filteredOptionTypes; 2476 }, 2477 optionInfo: function() { 2478 var self = this; 2479 2480 return self.options.map(function(option, index) { 2481 return { 2482 name: option, 2483 types: self.getOptions('option' + ( 2484 index + 1 2485 ), self.optionTypes[index].split(',')) 2486 } 2487 }); 2488 }, 2489 hasVariant: function() { 2490 return this.product.options.length > 0; 2491 }, 2492 shouldHideSingleVariantOptions: function() { 2493 return this.hasHideSingleVariantOptionsPlugin && 2494 this.product.variants && 2495 this.product.variants.length <= 1; 2496 }, 2497 variantSize: function() { 2498 if(this.product.options){ 2499 return this.product.options.length; 2500 } 2501 }, 2502 firstVariant: function() { 2503 return this.product.variants[0]; 2504 }, 2505 firstCheapestVariant: function() { 2506 return this.product.variants.find((v)=> (v.price === this.priceStats.minPrice)); 2507 }, 2508 priceStats: function() { 2509 return this.product.variants.reduce(function(acc, variant) { 2510 return { 2511 minPrice: variant.price < acc.minPrice ? variant.price : acc.minPrice, 2512 maxPrice: variant.price > acc.maxPrice ? variant.price : acc.maxPrice, 2513 }; 2514 }, { 2515 minPrice: this.firstVariant.price, 2516 maxPrice: this.firstVariant.price, 2517 }); 2518 }, 2519 hidePrice: function() { 2520 return this.product && this.product.hidePrice === true; 2521 }, 2522 salesModePurchasable: function() { 2523 return !(this.product && this.product.salesModePurchasable === false); 2524 }, 2525 // - 任鏿æ£ï¼ç´ é ç¶ ï¼ã鏿ãåªæ¯å é²è©¦ç®æ¸ å®ï¼ä¸æç´æ¥ä¸å®ï¼æ åªæèå¹åå 2526 // - å ¶ä»æ å¢ï¼ååé ã群çµé ãå¤å±¤ç´åé¡ãæå°ãé¦é åååå¡ï¼ï¼ä¸å¯è³¼è²·ï¼å«èå¹ï¼å°±æ´çµæ¶æ 2527 showPurchaseControls: function() { 2528 if (this.isNnCollection || this.isBundleDiscount) { 2529 return !this.hidePrice; 2530 } 2531 return this.salesModePurchasable; 2532 }, 2533 variantPrice: function() { 2534 if (this.hidePrice) { 2535 return ''; 2536 } 2537 var from = liquidHelper.defaultCurrency; 2538 if (this.currentVariant) { 2539 return moneySymbol(this.currentVariant.price, from); 2540 } 2541 if (this.product.variants.length === 1) { 2542 return moneySymbol(this.firstVariant.price, from); 2543 } 2544 2545 var minPrice = this.priceStats.minPrice; 2546 var maxPrice = this.priceStats.maxPrice; 2547 2548 if (minPrice !== maxPrice && (!this.hasVariantPriceRangePlugin || this.isDisplayPriceRange)) { 2549 this.isDiscountPrice = false; 2550 return moneySymbol(minPrice, from) + '~' + moneySymbol(maxPrice, from); 2551 } else { 2552 return moneySymbol(minPrice, from); 2553 } 2554 }, 2555 marketPrice: function() { 2556 if (this.hidePrice) { 2557 this.isDiscountPrice = false; 2558 return; 2559 } 2560 var from = liquidHelper.defaultCurrency; 2561 if (this.currentVariant) { 2562 this.isDiscountPrice = false; 2563 if (this.currentVariant.compareAtPrice && this.currentVariant.compareAtPrice > this.currentVariant.price) { 2564 this.isDiscountPrice = true; 2565 return moneySymbol(this.currentVariant.compareAtPrice, from); 2566 } 2567 } else { 2568 if (!_.includes(this.variantPrice, '~')) { 2569 const price = Number(this.variantPrice.replace(/[^0-9.
2569-]/g, "")) 2570 // æªé¸ææ¬¾å¼ä¹ä¸é¡¯ç¤ºåéæï¼é¡¯ç¤ºç¬¬ä¸åæä¾¿å®ç款å¼çå®å¹ 2571 if (this.firstCheapestVariant.compareAtPrice && this.firstCheapestVariant.compareAtPrice > price){ 2572 this.isDiscountPrice = true; 2573 return moneySymbol(this.firstCheapestVariant.compareAtPrice, from); 2574 } 2575 // æªé¸ææ¬¾å¼æè¦æ¹åä¸è¬å¹æ ¼é¡è² 2576 this.isDiscountPrice = false; 2577 } 2578 } 2579 }, 2580 isShowDropdownList: function() { 2581 if (this.product.options.length > 0) { 2582 return true; 2583 } 2584 return this.product.variants.length > 1 2585 }, 2586 priceTitleTag: function() { 2587 return this.marketPrice 2588 ? getDiscountPriceName() 2589 : getDiscountPriceSuggestionName(); 2590 }, 2591 isHideAddCartBtn: function() { 2592 if (this.addCartText === 'å·²å®å®') { 2593 return true; 2594 } 2595 return false; 2596 }, 2597 isSecondaryBtn: function() { 2598 if (this.addCartText === 'è¯çµ¡åºå®¶') { 2599 return true; 2600 } 2601 return false; 2602 }, 2603 variantsMaxUsableBonus: function() { 2604 var variants = this.product.variants; 2605 var maxUsableBonusArray = variants.map(function(item) { 2606 return item.maxUsableBonus 2607 }); 2608 return Math.max.apply(null, maxUsableBonusArray); 2609 }, 2610 bonusToPrice: function() { 2611 const bonus = this.currentVariant 2612 ? this.currentVariant.maxUsableBonus 2613 : this.maxUsableBonus; 2614 const price = Math.floor(bonus / window.liquidHelper.conversionBonus); 2615 const priceWithMoney = window.themeHelper.productDisplayCurrencyBlock(price); 2616 return "(ç´çæ¼ value )".replace('value', priceWithMoney); 2617 }, 2618 isMobileSize: function() { 2619 return window.innerWidth <= 580 2620 }, 2621 limitBuyText: function () { 2622 const minCount = this.product.minBuy; 2623 const maxCount = this.product.limitBuy; 2624 if (minCount > 0 && maxCount > 0) { 2625 return 'æ¤å忝çè¨å®æå°é購買 minCount ä»¶ï¼æå¤å¯è³¼è²· maxCount ä»¶'.replace('minCount', minCount).replace('maxCount', maxCount); 2626 } 2627 if (minCount > 0) { 2628 return 'æ¤å忝çè¨å®æå°é購買 minCount ä»¶'.replace('minCount', minCount); 2629 } 2630 if (maxCount > 0) { 2631 return 'æ¤å忝çè¨å®æå¤å¯è³¼è²· maxCount ä»¶'.replace('maxCount', maxCount); 2632 } 2633 return ''; 2634 } 2635 }, 2636 methods: { 2637 onClickSelectModal: function(objData, selectOptionStr) { 2638 this.isModalSelectShow = true; 2639 this.modalOption = objData; 2640 this.selectOption = selectOptionStr 2641 this.selectCurrentStr = this.currentOption && (String(this.currentOption[selectOptionStr]) || null) 2642 }, 2643 onChangeModalSelect: function(flag, isSelect) { 2644 if(!isSelect){ 2645 this.setOption(this.selectOption,this.selectCurrentStr,this.modalOption.types) 2646 } 2647 this.isModalSelectShow = flag; 2648 }, 2649 setOption: function(optionKey, type, dataArr) { 2650 let flag = true 2651 dataArr.forEach(item => { 2652 if (item.name === type) { 2653 flag = item.isValid 2654 } 2655 }) 2656 if (flag) { 2657 this.toggleCurrentOption(optionKey, type) 2658 } 2659 }, 2660 addToWishListEvent: function() { 2661 try { 2662 if (appMarketAddToWishListEvent) { 2663 var product = this.product; 2664 var currentVariant = this.currentVariant 2665 var element = $(`.btn[data-id=${product.id}]`); 2666 var index; 2667 var listName; 2668 if (element) { 2669 index = element.data('position') 2670 listName = element.data('list') 2671 } 2672 // sku_properties:é¸ä¸æ¬¾å¼ç option pairs(ç¶åèªç³»),é¡åå zip å¼ 2673 var optionValues = [currentVariant.option1, currentVariant.option2, currentVariant.option3]; 2674 var properties = [];
2675 (product.options || []).forEach(function(optionName, i) { 2676 if (optionName && optionValues[i]) { 2677 properties.push({ name: optionName, value: optionValues[i] }); 2678 } 2679 }); 2680 var dataSet = { 2681 name: product.title, 2682 category: product.productType, 2683 categories: (this.categories && this.categories.length) ? this.categories : (categoryLevels.length ? categoryLevels : (product.id === pageMainProductId ? productCategoryLevels : undefined)), 2684 sku: currentVariant.sku, 2685 price: currentVariant.price, 2686 compare_at_price: currentVariant.compareAtPrice, 2687 properties: properties, 2688 quantity: currentVariant.inventoryQuantity, 2689 variant: currentVariant.title, 2690 listName: listName || null, 2691 productId: product.id, 2692 variantId: currentVariant.id, 2693 index: Number(index) || 0, 2694 } 2695 appMarketAddToWishListEvent(dataSet) 2696 } 2697 } catch (e) { 2698 console.error(e) 2699 } 2700 }, 2701 addWishList: function() { 2702 if (this.currentVariant === null) { 2703 window.msg('è«é¸æå忬¾å¼', 'warning').show(); 2704 return; 2705 } 2706 var productVariantId = this.currentVariant.id; 2707 var addToWishListEvent = this.addToWishListEvent 2708 $.ajax({ 2709 method: 'POST', 2710 url: '/tracking_items', 2711 dataType: 'json', 2712 data: { 2713 product_variant_id: productVariantId 2714 }, 2715 success: function(response) { 2716 if (response.message) { 2717 window.msg(response.message, 'success').show(); 2718 addToWishListEvent() 2719 } 2720 2721 if (response.error) { 2722 window.msg(response.error, 'error').show(); 2723 2724 } 2725 if (response.info) { 2726 window.msg(response.info, 'info').show(); 2727 } 2728 if (response.success === false) { 2729 if (window.liquidHelper && window.liquidHelper.language && window.liquidHelper.language.handle) { 2730 window.location = "/" + window.liquidHelper.language.handle + "/account/login"; 2731 } else { 2732 window.location = "/account/login"; 2733 } 2734 } 2735 } 2736 }); 2737 }, 2738 setChoose: function(currentVariant) { 2739 this.maxUsableBonus = 0; 2740 var quantity = 1; 2741 var cartItem = null; 2742 if (!this.isNnCollection && this.cartItems) { 2743 cartItem = this.normalGetChoosenItem(currentVariant); 2744 } 2745 if (this.isNnCollection) { 2746 cartItem = this.nnCollectionGetChoosenItem(currentVariant); 2747 } 2748 this.isChoose = !! cartItem; 2749 if (this.isNewNnCollection) { 2750 return 2751 } 2752 this.quantity = cartItem 2753 ? cartItem.quantity 2754 : this.quantity; 2755 2756 // product modal è¯çµ¡åºå®¶æ å¢ 2757 if (currentVariant) { 2758 var photoIndex = 0; 2759 if (! currentVariant.imgUrl) { 2760 currentVariant.imgUrl = this.swiperPhotos.length > 0 2761 ? (this.swiperPhotos[photoIndex] && this.swiperPhotos[photoIndex].large) 2762 : this.featuredImage.large; 2763 } 2764 currentVariant.productTitle = this.product.title + ' - ' + this.currentVariant.title; 2765 } 2766 }, 2767 normalGetChoosenItem: function(currentVariant) { 2768 return this.cartItems.find(function(cartItem) { 2769 return currentVariant && cartItem.id === currentVariant.id; 2770 }); 2771 }, 2772 nnCollectionGetChoosenItem: function(currentVariant) { 2773 var isSelected = null; 2774 if (! currentVariant) { 2775 return isSelected; 2776 } 2777 if (this.isNewNnCollection) { 2778 var cart = store.get(`SpecialCollectionCart_${this.collectionId}`); 2779 isSelected = cart && cart.find((item) => item.variant_id == currentVariant.id) || null; 2780 } else { 2781 store.each(function(value, key) { 2782 var productId = _.includes(key, 'Pro' + currentVariant.productId); 2783 var variantID = _.includes(key, 'Var' + currentVariant.id); 2784 if (productId && variantID) { 2785 isSelected = store.get(key); 2786 } 2787 }); 2788 } 2789 2790 return isSelected; 2791 }, 2792 // get product detail 2793 getProductDetail: function() { 2794 var self = this; 2795 2796 $.ajax({ 2797 url: self.productUrl + '.json', 2798 type: 'GET', 2799 timeout: 30000, 2800 beforeSend: function() { 2801 self.isLoading = true; 2802 }, 2803 error: function(xhr) { 2804 self.closeModal(); 2805 if (xhr.status === 429) { 2806 window.showAddCartRateLimitModal(5); 2807 return; 2808 } 2809 window.msg('網路é£ç·ç°å¸¸ï¼è«éæ°æ´ç', 'error').show(); 2810 } 2811 }).done(function(data) { 2812 if (data.id) { 2813 var productData = [themeHelper.toCamelCase(data)]; 2814 self.product = themeHelper.priceWithDiscount(productData, liquidHelper.hasPriceWithDiscountPlugin)[0]; 2815 self.maxUsableBonus = self.variantsMaxUsableBonus; 2816 if (self.product.variants.length === 1 || liquidHelper.isFirstVariantSelected || self.selectedVariantId) { 2817 self.currentVariant = self.firstValidVariant; 2818 // 妿已ç¶èªé¸ååï¼åååé 䏿»å å ¥è³¼ç©è»é¡¯ç¤ºèªé¸åå 2819 if (self.selectedVariantId) { 2820 self.currentVariant = self.selectedValidVariant; 2821 } 2822 if (self.currentVariant) { 2823 self.setChoose(self.currentVariant); 2824 self.setDefaultOption(); 2825 } 2826 } 2827 if (self.displayProductDiscountsList) { 2828 self.setUpDiscountsTag(data); 2829 } 2830 self.isLoading = false;
2831 if (self.product && self.product.variants) { 2832 self.product.variants.forEach(function(discountedVariant) { 2833 var rawVariant = data.variants.find(function(v) { return v.id === discountedVariant.id; }); 2834 if (rawVariant) { rawVariant.price = discountedVariant.price; } 2835 }); 2836 } 2837 viewItem && viewItem(data, { collectionId: '56655', collectionName: "è³æ©å¨é", categories: (self.categories && self.categories.length) ? self.categories : (categoryLevels.length ? categoryLevels : (data.id === pageMainProductId ? productCategoryLevels : undefined)) }); 2838 2839 (function() { 2840 // Read login status from cacheable, skip GET /pv_notification if not login. 2841 if (window.store && window.store.get('customer')) { 2842 var cacheableCustomer = window.store.get('customer'); 2843 if (cacheableCustomer.notLogin) { 2844 return; 2845 } 2846 } 2847 $.ajax({ 2848 url: '/pv_notification', 2849 method: 'GET', 2850 dataType: 'json', 2851 data: { 2852 product_id: parseInt(data.id) 2853 }, 2854 success: function(response) { 2855 self.variantNotifications = response.variants; 2856 } 2857 }) 2858 })(); 2859 } else { 2860 window.msg('網路é£ç·ç°å¸¸ï¼è«éæ°æ´ç', 'error').show(); 2861 self.closeModal() 2862 } 2863 }) 2864 }, 2865 // product image btn 2866 photoOnChange: function(photoIndex, isVariantReposition) { 2867 var visiblePhotos = (this.currentVariant && this.currentVariant.photos.length) 2868 ? this.currentVariant.photos 2869 : this.product.photos.map(function(p) { return p.photo; }); 2870 var result = themeHelper.buildNavigateItemImagePayload(this._navState, { 2871 product: this.product, 2872 currentVariant: this.currentVariant, 2873 visiblePhotos: visiblePhotos, 2874 slideIndex: photoIndex, 2875 videoOffset: this.firstImageIndex, 2876 }); 2877 this._navState = result.nextState; 2878 if (result.payload && !isVariantReposition) { 2879 window.navigateItemImage(result.payload); 2880 } 2881 this.currentImageIndex = photoIndex; 2882 }, 2883 toggleCurrentOption: function(key, value) { 2884 this.currentOption[key] = 2885 (this.currentOption[key] === value || value === 'null') ? null : value; 2886 var variantIndex = this.getVariantIndex(); 2887 if (variantIndex !== -1) { 2888 this.currentVariant = this.product.variants[variantIndex]; 2889 } else { 2890 this.currentVariant = null; 2891 } 2892 this.setChoose(this.product.variants[variantIndex]); 2893 if (this.currentOption[key] !== null) { 2894 var optionIndex = parseInt(key.replace('option', '')) - 1; 2895 appStoreSelectItemEvent(this.product, this.product.options[optionIndex], this.currentOption[key], this.currentVariant); 2896 } 2897 }, 2898 toggleNotification: function() { 2899 var self = this; 2900 var variantId = this.currentVariant.id; 2901 2902 $.ajax({ 2903 url: '/toggle_pv_notification', 2904 method: 'POST', 2905 dataType: 'json', 2906 data: { 2907 product_variant_id: variantId 2908 }, 2909 success: function(response) { 2910 self.variantNotifications[variantId] = response.notice; 2911 window.msg(response.message, "success").show(); 2912 }, 2913 error: function(xhr) { 2914 var response = xhr.responseJSON; 2915 var msg = response && response.error || "網路é£ç·ç°å¸¸ï¼è«éæ°æ´ç"; 2916 window.msg(msg, "error").show(); 2917 } 2918 }) 2919 }, 2920 getOptionImageIndex: function(index) { 2921 this.currentImageIndex = index; 2922 }, 2923 quantityDecrease: function() { 2924 if (this.cartItem) { 2925 themeHelper.EventBus.$emit('quantityDecrease', this.cartItem, false); 2926 this.quantity = this.cartItem.quantity 2927 } else { 2928 window.msg("è«é¸æå忬¾å¼", 'warning').show(); 2929 } 2930 }, 2931 quantityIncrease: function() { 2932 if (this.cartItem) { 2933 themeHelper.EventBus.$emit('quantityIncrease', this.cartItem, false); 2934 this.quantity = this.cartItem.quantity 2935 } else { 2936 window.msg("è«é¸æå忬¾å¼", 'warning').show(); 2937 } 2938 }, 2939 quantityChange: function(el) { 2940 if (this.cartItem) { 2941 themeHelper.EventBus.$emit('quantityChange', parseInt(el.target.value), this.cartItem, false); 2942 this.quantity = this.cartItem.quantity; 2943 el.target.value = this.cartItem.quantity; 2944 } else { 2945 window.msg("è«é¸æå忬¾å¼", 'warning').show(); 2946 } 2947 }, 2948 addProduct: function() { 2949 if (this.addCartText === 'è¯çµ¡åºå®¶') { 2950 $('#messagebuy-Modal').data('variant', this.currentVariant); 2951 $('#messagebuy-Modal').modal('show'); 2952 $('#messagebuy-Modal').css("background-color", "rgba(0, 0, 0, .6)"); 2953 } else if ( 2954 this.addCartText === 'å·²ç»è¨è£è²¨éç¥' || 2955 this.addCartText === 'å·²å®å®ï¼è²¨å°éç¥æ' 2956 ) { 2957 this.toggleNotification(); 2958 } else { 2959 if (this.cartItem) { 2960 try { 2961 if (this.isChoose) { 2962 themeHelper.EventBus.$emit('updateStore', 'update', this.cartItem, this.callBack) 2963 } else { 2964 themeHelper.EventBus.$emit('updateStore', 'add', this.cartItem, this.callBack) 2965 } 2966 2967 this.adding = true; 2968 this.closeModal(); 2969 } catch (e) { 2970 window.msg("å忬¾å¼ç°å¸¸", 'error').show(); 2971 } 2972 } else { 2973 window.msg("è«é¸æå忬¾å¼", 'warning').show(); 2974 } 2975 } 2976 }, 2977 closeModal: function() { 2978 themeHelper.EventBus.$emit('closeProductModal'); 2979 }, 2980 setDefaultOption: function() { 2981 var self = this; 2982 Object.keys(self.currentOption).map(function(optionKey) { 2983 self.currentOption[optionKey] = self.currentVariant[optionKey]; 2984 }); 2985 }, 2986 getVariantIndex: function() { 2987 var self = this; 2988 return self.product.variants.findIndex(function(variant, index) { 2989 var isVariant = true;
2990 Object.keys(self.currentOption).forEach(function(option) { 2991 if (variant[option] !== self.currentOption[option]) { 2992 isVariant = false; 2993 } 2994 }); 2995 return isVariant; 2996 }); 2997 }, 2998 2999 // 篩é¸éè¤åé 3000 getUniqueVariant: function(variants) { 3001 return variants.filter(function(value, index, self) { 3002 return self.indexOf(value) === index; 3003 }); 3004 }, 3005 groupBy(xs, key) { 3006 return xs.reduce(function(rv, x) { 3007 (rv[x[key]] = rv[x[key]] || []).push(x); 3008 return rv; 3009 }, {}); 3010 }, 3011 setUpDiscountsTag(data) { 3012 var self = this; 3013 var languagePrefix = '/' + ((window.shopScriptHelper && window.shopScriptHelper.i18nLocale) || 'zh-TW'); 3014 $.ajax({ 3015 url: languagePrefix + self.productUrl + '/discounts_list', 3016 method: 'GET', 3017 success: function(result) { 3018 if (result.length > 0) { 3019 var discounts_list = self.groupBy(result, 'campaign_type'); 3020 self.discountsList = discounts_list; 3021 } else { 3022 self.discountsList = null; 3023 } 3024 } 3025 }); 3026 }, 3027 getOptions: function(optionKey, optionTypes) { 3028 var self = this; 3029 return optionTypes.map(function(optionType, index) { 3030 var isValid = true; 3031 3032 // é¸åºå å«ç®åtypeçvariant 3033 var matchVariants = self.product.variants.filter(function(variant) { 3034 return variant[optionKey] === optionType; 3035 }); 3036 3037 // 篩é¸å·²å¾é¸type 3038 Object.keys(self.currentOption).forEach(function(currentOptionKey) { 3039 if (currentOptionKey !== optionKey) { 3040 matchVariants = matchVariants.filter(function(variant) { 3041 if (self.currentOption[currentOptionKey]) { 3042 return variant[currentOptionKey] === self.currentOption[currentOptionKey] 3043 } else { 3044 return true; 3045 } 3046 }); 3047 } 3048 }); 3049 if (matchVariants.length === 0) { 3050 isValid = false; 3051 } 3052 if (! self.isEmptyClickable) { 3053 isValid = false; 3054 matchVariants.find(function(item) { 3055 if (item.inventoryQuantity === null || item.inventoryQuantity > 0 || item.inventoryPolicy === 'continue') { 3056 isValid = true; 3057 } 3058 }); 3059 } 3060 return {name: optionType, isValid: isValid} 3061 }); 3062 } 3063 } 3064 }; 3065 }); 3066</script>
3066 3067 3068<!-- cyb_snippet _product_modal_js end --> 3069 3070<!-- cyb_snippet components/product_modal/product_modal end --> 3071 3072<!-- cyb_snippet messagebuy_modal start --> 3073 3074 3075<!-- cyb_snippet messagebuy_modal end --> 3076<!-- cyb_snippet components/rate_limit_modal start --> 3077<link href='//cdn1.cybassets.com/frontend/shop/beta_theme/css/rate_limit_modal-ec858cfa815323bb.css' rel='stylesheet' type='text/css' media='all' /> 3078 3079<div class="modal fade" id="rate-limit-modal" tabindex="-1" role="dialog" aria-hidden="true" data-backdrop="static" data-keyboard="false"> 3080 <div class="modal-dialog modal-dialog-centered" role="document"> 3081 <div class="modal-content"> 3082 <div class="modal-body"> 3083 <div class="qk-text--default_dark rate-limit-text"> 3084 <p id="rate-limit-title">ç®åæ¶è³¼äººæ½®ç¾å¤ï¼è«èå¿çå</p> 3085 <p class="qk-fs--body qk-fw--500 rate-limit-message"> 3086 <span class="qk-text--error" id="rate-limit-countdown"></span> 3087 <span id="rate-limit-desc"></span> 3088 </p> 3089 <p class="qk-fs--body qk-fw--500 rate-limit-message" id="rate-limit-warn">è¥é¢éæ¤é é¢ï¼å¯è½æå»¶é·çå¾ æéã</p> 3090 </div> 3091 <button id="rate-limit-btn" class="btn qk-btn qk-btn--primary" disabled>éæ°é²å ¥ååé </button> 3092 </div> 3093 </div> 3094 </div> 3095</div> 3096
3097<script> 3098 window.showRateLimitModal = function(countdownSec) { 3099 var countdown = countdownSec || 5; 3100 var $modal = $('#rate-limit-modal'); 3101 var $btn = $modal.find('#rate-limit-btn'); 3102 var $countdownEl = $modal.find('#rate-limit-countdown'); 3103 3104 $btn.show(); 3105 $modal.find('#rate-limit-desc').text(language["product_rate_limit_desc"]); 3106 $countdownEl.text(countdown); 3107 $btn.prop('disabled', true); 3108 $modal.modal('show'); 3109 3110 var timer = setInterval(function() { 3111 countdown--; 3112 $countdownEl.text(countdown); 3113 if (countdown <= 0) { 3114 clearInterval(timer); 3115 $btn.prop('disabled', false); 3116 } 3117 }, 1000); 3118 3119 $btn.off('click').on('click', function() { 3120 location.reload(); 3121 }); 3122 } 3123 3124 window.showAddCartRateLimitModal = function(countdownSec) { 3125 var countdown = countdownSec || 5; 3126 var $modal = $('#rate-limit-modal'); 3127 var $countdownEl = $modal.find('#rate-limit-countdown'); 3128 3129 $modal.find('#rate-limit-btn').hide(); 3130 $modal.find('#rate-limit-desc').text(language["addcart_rate_limit_desc"]); 3131 $countdownEl.text(countdown); 3132 $modal.modal('show'); 3133 3134 var timer = setInterval(function() { 3135 countdown--; 3136 $countdownEl.text(countdown); 3137 if (countdown <= 0) { 3138 clearInterval(timer); 3139 $modal.modal('hide'); 3140 } 3141 }, 1000); 3142 } 3143</script>
3143 3144 3145<!-- cyb_snippet components/rate_limit_modal end --> 3146
3147<script> 3148 $(document).ready(function() { 3149 const shouldSkipQuantityCheck = false; 3150 const newAddCartModalApp = new window.themeHelper.LiquidVueHandler({ 3151 componentNames: Object.keys(window.themeHelper.productModalComponents), 3152 mountSelector: '#new-addcart-modal', 3153 autoMount: false, 3154 }); 3155 3156 newAddCartModalApp.createApp({ 3157 el: '#new-addcart-modal', 3158 delimiters: ['${', '}'], 3159 data() { 3160 return { 3161 collectionId: 0, 3162 categories: [], 3163 color: '', // unused 3164 isCollection: true, 3165 productQuantity: 0, 3166 onlyDescription: false, 3167 showProductModal: false, 3168 popProductUrl: '', 3169 loading: false, 3170 }; 3171 }, 3172 mounted: function() { 3173 themeHelper.EventBus.$on('closeProductModal',this.closeProductModal); 3174 themeHelper.EventBus.$on('updateStore', this.addProduct); 3175 themeHelper.EventBus.$on('quantityDecrease', this.quantityDecrease); 3176 themeHelper.EventBus.$on('quantityIncrease', this.quantityIncrease); 3177 themeHelper.EventBus.$on('quantityChange', this.quantityChange); 3178 }, 3179 methods: { 3180 addProduct: function(actionType, productData, checkoutAddToCartCallback){ 3181 var self = this; 3182 var pageViewId = window.CYBERBIZ && window.CYBERBIZ.dis && window.CYBERBIZ.dis.pageViewId; 3183 $.ajax({ 3184 method: 'POST', 3185 url: '/cart/add', 3186 headers: pageViewId ? { 'X-Cyb-Page-View-Id': pageViewId } : {}, 3187 data: { 3188 id: productData.id, 3189 quantity: productData.quantity, 3190 }, 3191 dataType: 'json', 3192 beforeSend: function() { 3193 self.loading = true; 3194 themeHelper.ajaxLoadingMsg('loading'); 3195 $('.shopcart').dropdown('hide') 3196 $('.global-cart-count').hide(); 3197 $('.global-cart-loading').show(); 3198 $('.global-cart-loading').html('<i class="fa fa-spinner fa-pulse" style="vertical-align: middle;"></i>'); 3199 }, 3200 error: function(xhr) { 3201 $('.global-cart-loading').hide(); 3202 $('.global-cart-count').show(); 3203 self.loading = false; 3204 if (xhr.status === 429) { 3205 themeHelper.ajaxLoadingMsg('hide', 0); 3206 self.closeProductModal(); 3207 window.showAddCartRateLimitModal(5); 3208 return; 3209 } 3210 themeHelper.ajaxLoadingMsg('fail', 2000); 3211 } 3212 }).done(function(data, status, request){ 3213 // product modal ç«å³è³¼è²·æé 3214 window.sendAddToCartEvent && sendAddToCartEvent({ 3215 price: productData.price, 3216 quantity: productData.quantity, 3217 id: productData.product.id, 3218 name: productData.product.title, 3219 category: productData.product.productType, 3220 brand: productData.product.vendor, 3221 qc: productData.variant.qc, 3222 variant: { 3223 id: productData.variant.id, 3224 title: productData.variant.title, 3225 sku: productData.variant.sku, 3226 price: productData.variant.price, 3227 qc: productData.variant.qc, 3228 }, 3229 position: "ååå½åºè¦çª", 3230 request, 3231 }) 3232 if (self.isQuickBuy) { 3233 if (window.liquidHelper && window.liquidHelper.language && window.liquidHelper.language.handle) { 3234 window.location = "/" + window.liquidHelper.language.handle + "/cart"; 3235 } else { 3236 window.location = "/cart"; 3237 } 3238 } else { 3239 themeHelper.ajaxLoadingMsg('success'); 3240 pullNavCart(); 3241 $('.shopcart').dropdown('show') 3242 $('.global-cart-loading').hide(); 3243 self.loading = false; 3244 } 3245 if(typeof checkoutAddToCartCallback === 'function'){ 3246 var callbackData = { 3247 id: productData.id, 3248 quantity: productData.quantity, 3249 title: productData.product ? productData.product.title : productData.title || '' 3250 }; 3251 checkoutAddToCartCallback(callbackData) 3252 } 3253 peh.emit('product:add_to_cart', [{ 3254 variantId: productData.id, 3255 quantity: productData.quantity 3256 }], self.collectionId); 3257 }).fail(function(e){ 3258 if (e.status === 429) { 3259 return; 3260 } 3261 let err_msg = e.responseJSON.err_msg; 3262 err_msg && err_msg.length > 0 ? 3263 window.msg(e.responseJSON.err_msg, 'warning').show(): 3264 window.msg("å å ¥è³¼ç©è»æèª¤ï¼è«éæ°å試", 'warning').show(); 3265 }) 3266 }, 3267 quantityDecrease: function(cartItem, isAdded){ 3268 if (cartItem.quantity > 1) { 3269 cartItem.quantity -= 1; 3270 } else { 3271 window.msg("æ¸éä¸å¾çºä½æ¼ 1", 'warning').show(); 3272 } 3273 }, 3274 quantityIncrease: function(cartItem, isAdded){ 3275 const limitQuantity = cartItem.variant.inventoryQuantity; 3276 const limitBuy = cartItem.product.limitBuy 3277 if (limitBuy && cartItem.quantity >= limitBuy) { 3278 product_limit_buy = "æ¤ååéè³¼ limitBuy ä»¶".replace('limitBuy', limitBuy) 3279 window.msg(product_limit_buy, 'warning').show(); 3280 return; 3281 } else if (cartItem.quantity >= liquidHelper.cartQuantityLimit) { 3282 window.msg("æ¸éè¶ é購買ä¸é", 'warning').show(); 3283 } else if ( cartItem.quantity < limitQuantity || limitQuantity === null || 3284 cartItem.variant.inventoryPolicy == "continue" || shouldSkipQuantityCheck) { 3285 cartItem.quantity += 1; 3286 } else { 3287 this.showInventoryMessage(limitQuantity); 3288 } 3289 },
3290 quantityChange: function(quantity, cartItem, isAdded){ 3291 const limitBuy = cartItem.product.limitBuy 3292 var limitQuantity = cartItem.variant.inventoryQuantity; 3293 var inventoryPolicy = cartItem.variant.inventoryPolicy; 3294 if (Number.isInteger(quantity)) { 3295 if (quantity >= 1) { 3296 if (limitBuy && quantity >= limitBuy) { 3297 product_limit_buy = "æ¤ååéè³¼ limitBuy ä»¶".replace('limitBuy', limitBuy) 3298 window.msg(product_limit_buy, 'warning').show(); 3299 } else if (quantity > liquidHelper.cartQuantityLimit) { 3300 window.msg("æ¸éè¶ é購買ä¸é", 'warning').show(); 3301 } else if (quantity <= limitQuantity || limitQuantity === null || inventoryPolicy == "continue" || shouldSkipQuantityCheck) { 3302 cartItem.quantity = quantity; 3303 } else { 3304 cartItem.quantity = limitQuantity; 3305 this.showInventoryMessage(limitQuantity); 3306 } 3307 } else { 3308 window.msg("æ¸éä¸å¾çºä½æ¼ 1", 'warning').show(); 3309 } 3310 } else { 3311 window.msg("æ¸éè¼¸å ¥é¯èª¤", 'warning').show(); 3312 } 3313 }, 3314 popModal: function(productUrl, collectionId, color, isCollection, isShowDescription, isQuickBuy, variantId, checkoutAddToCartCallback, categories){ 3315 this.showProductModal = true; 3316 this.collectionId = collectionId; 3317 this.categories = categories || []; 3318 this.popProductUrl = productUrl; 3319 this.color = color || ''; // unused 3320 this.isCollection = isCollection || false; 3321 this.isShowDescription = isShowDescription != false; 3322 this.isQuickBuy = isQuickBuy || false; 3323 this.selectedVariantId = parseInt(variantId) || undefined; 3324 this.checkoutAddToCartCallback = checkoutAddToCartCallback; 3325 document.body.style.overflow = "hidden"; 3326 }, 3327 closeProductModal: function() { 3328 this.showProductModal = false; 3329 document.body.style.overflow = ""; 3330 }, 3331 showInventoryMessage: function(inventoryQuantity) { 3332 const stockMessage = "åå庫åå©é¤ count ä»¶".replace('count', inventoryQuantity || 0); 3333 window.msg(stockMessage, 'warning').show(); 3334 }, 3335 } 3336 }); 3337 3338 for (const componentName in window.themeHelper.productModalComponents) { 3339 newAddCartModalApp.component( 3340 componentName, 3341 window.themeHelper.productModalComponents[componentName], 3342 ); 3343 } 3344 3345 window.new_addcart_modal = newAddCartModalApp.mount(); 3346 }); 3347</script>
3347 3348 3349<!-- cyb_snippet new_addcart_modal end --> 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361
3361<script> 3362 document.addEventListener('DOMContentLoaded', function() { 3363 window.renderCollectionPage('#collection-content', { 3364 collection: { 3365 id: Number('56655') || undefined, 3366 title: "è³æ©å¨é", 3367 className: 'CustomCollection', 3368 handle: "spin-off-product" 3369 }, 3370 currentTags: null || '', 3371 containerClass: 'col-lg-9', 3372 cartEnabled: true, 3373 showPeriodicLabel: false, 3374 trackingVariantIds: null, 3375 useVanillaFilter: false, 3376 filterNotASearch: null, 3377 settingsData: { 3378 displayProductTotalSold: false, 3379 productScale: "three_to_four_scale", 3380 displayPeriodicOrderLabel: false, 3381 discountPriceSloganUrl: '//cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3NzY2NDk0NTZfb25zYWxlX2ljb24ucG5nLnBuZyJdXQ.png?sha=33d4dbfff22b6629', 3382 productSloganDisplay: false, 3383 collectionPaginationLimit: Number(24) || 24, 3384 isInfiniteScroll: false, 3385 isUpcomingProductsEnabled: false, 3386 productTextAlign: "center", 3387 displayProductVariantThumbnail: null, 3388 hasIntegratedProductLabelsPlugin: false, 3389 productColumnForPc: "", 3390 isDisplayPriceRange: null, 3391 productCardHoverEffect: "zoom", 3392 productImageBorderRadius:0 3393 } 3394 }); 3395 }); 3396 </script>
3396 3397 3398
3398<script> 3399 $('#collection .collection_products').on('click', ".btn-cart", function(event) { 3400 event.preventDefault(); 3401 var comboProductInfo = $(this).data('comboProductInfo'); 3402 if (comboProductInfo) { 3403 window.themeHelper.EventBus.$emit('showRelatedItemsSelectModal', comboProductInfo); 3404 } else { 3405 var productHandle = '/products/' + $(this).data('handle'); 3406 var collectionId = $(this).data('collection'); 3407 var color = $(this).data('color'); 3408 var isCollection = true; 3409 new_addcart_modal.popModal(productHandle, collectionId, color, isCollection); 3410 } 3411 }); 3412 3413 // ç¡éä¸æè½æç追蹤 3414 window.gtIds = dataLayer.reduce(function(acc, curr) { 3415 if (curr[2] && curr[2].custom_map && curr[2].custom_map.dimension3 === 'infinite_scroll') { 3416 acc.push(curr[1]); 3417 } 3418 return acc; 3419 }, []); 3420 gtag('set', 'dimension3', 'prodcut_filter'); 3421 window.gtIds.forEach(function(g) { 3422 gtag('event', 'normal_collection_page_load', {send_to: g}) 3423 }); 3424 </script>
3424 3425 3426 3427 3428 3429 3430 3431 3432 </div> 3433 3434 <!-- Footer --> 3435 3436 3437 3438 3439 3440 3441 3442<style> 3443 3444 3445 @media(min-width: 991px) { 3446 .display_x .left-content > div { 3447 max-width: calc(100% / 2); 3448 } 3449 } 3450</style> 3451 3452<div id="index-recommendation"></div> 3453 3454<footer id="footer" class="qk-fs--body qk-bg--footer_bg"> 3455 3456 3457 <div class="qk-container display_y"> 3458 <div class="footer_content qk-mg--0 qk-display--flex qk-justify--between"> 3459 <div class="left-content qk-flex--1"> 3460 3461 3462 <div class="link-list-container"> 3463 3464 <p class="footer_title qk-fs--title qk-text--footer_text">éæ¼æå</p> 3465 3466 <div class="item horizontal qk-text--left"> 3467 <ul class="qk-display--flex qk-flex--wrap"> 3468 3469 3470 <li class="qk-display--il_bk"> 3471 3472 <a 3473 class="qk-text--footer_text" 3474 href="/pages/æåæé»" 3475 rel="noopener noreferrer" 3476 target="_blank">æåæé»</a> 3477 3478 </li> 3479 3480 <li class="qk-display--il_bk"> 3481 3482 <a 3483 class="qk-text--footer_text" 3484 href="/pages/return-and-exchange" 3485 rel="noopener noreferrer" 3486 target="_blank">éæè²¨é ç¥</a> 3487 3488 </li> 3489 3490 <li class="qk-display--il_bk"> 3491 3492 <a 3493 class="qk-text--footer_text" 3494 href="/pages/privacy-policy" 3495 rel="noopener noreferrer" 3496 target="_blank">é±ç§æ¿ç</a> 3497 3498 </li> 3499 3500 <li class="qk-display--il_bk"> 3501 3502 <a 3503 class="qk-text--footer_text" 3504 href="/pages/terms" 3505 rel="noopener noreferrer" 3506 target="_blank">æåæ¢æ¬¾</a> 3507 3508 </li> 3509 3510 <li class="qk-display--il_bk"> 3511 3512 <a 3513 class="qk-text--footer_text" 3514 href="/pages/disclaimer" 3515 rel="noopener noreferrer" 3516 target="_blank">å è²¬è²æ</a> 3517 3518 </li> 3519 3520 <li class="qk-display--il_bk"> 3521 3522 <a 3523 class="qk-text--footer_text" 3524 href="/search" 3525 rel="noopener noreferrer" 3526 target="_blank">æ¥è©¢</a> 3527 3528 </li> 3529 3530 3531 </ul> 3532 </div> 3533 </div> 3534 3535 3536 3537 <div class="item contact qk-text--left"> 3538 3539 <p class="footer_title qk-fs--title qk-text--footer_text">è¯çµ¡è³è¨</p> 3540 3541 <ul> 3542 3543 <li class="phone qk-bd_r--default qk-bd--footer_text qk-display--il_bk"> 3544 <span class="qk-text--footer_text">客æå°ç·ï¼02-2709-2299</span> 3545 </li> 3546 3547 3548 <li class="fax qk-bd_r--default qk-bd--footer_text qk-display--il_bk"> 3549 <span class="qk-text--footer_text">客æå³çï¼02-2709-9009</span> 3550 </li> 3551 3552 3553 <li class="time qk-bd_r--default qk-bd--footer_text qk-display--il_bk">
3554 <span class="qk-text--footer_text">客ææéï¼é±ä¸è³é±äº12:30-19:30 åå®åæ¥å ¬ä¼</span> 3555 </li> 3556 3557 3558 <br> 3559 <li class="mail qk-bd_r--default qk-bd--footer_text qk-cursor--pointer qk-display--il_bk"> 3560 <a class="qk-text--footer_text" href="mailto:[email protected]">ä¿¡ç®±ï¼[email protected]</a> 3561 </li> 3562 3563 3564 <li class="address qk-bd_r--default qk-bd--footer_text qk-display--il_bk"> 3565 <span class="qk-text--footer_text">å°åï¼å°åå¸å¤§å®å建ååè·¯ä¸æ®µ332è</span> 3566 </li> 3567 3568 3569 </ul> 3570 </div> 3571 3572 3573 </div> 3574 <div class="right-content qk-display--flex qk-flex--column"> 3575 3576 <div class="fb_fanpage qk-hidden--mobile"> 3577 <div class="fb_fans_page_area"> 3578 <div 3579 class="fb-page" 3580 data-href="https://www.facebook.com/192162680810503" 3581 data-width="500" 3582 data-adapt-container-width="true" 3583 data-hide-cover="false" 3584 data-show-facepile="true"> 3585 <blockquote cite="https://www.facebook.com/192162680810503" class="fb-xfbml-parse-ignore"> 3586 <a target="_blank" rel="noopener noreferrer" href="https://www.facebook.com/192162680810503"></a> 3587 </blockquote> 3588 </div> 3589 </div> 3590 </div> 3591 3592 <div class="media qk-display--il"> 3593 <div class="item social_media qk-h--auto qk-float--l"> 3594 <ul> 3595 3596 <li class="qk-display--il_bk"> 3597 <a target="_blank" rel="noopener noreferrer" href="https://www.facebook.com/SpearX"> 3598 <svg 3599 class="facebook-svg" 3600 xmlns="http://www.w3.org/2000/svg" 3601 width="40" 3602 height="40"
3603 viewBox="0 0 40 40"> 3604 <path class="qk-svg--footer_text" d="M40 20.1208C40 30.1027 32.6767 38.3778 23.1167 39.8795V25.9409H27.765L28.65 20.1742H23.1167V16.4324C23.1167 14.8541 23.89 13.3174 26.3667 13.3174H28.8817V8.4073C28.8817 8.4073 26.5983 8.01729 24.4167 8.01729C19.86 8.01729 16.8833 10.779 16.8833 15.7774V20.1725H11.8183V25.9393H16.8833V39.8779C7.325 38.3745 0 30.101 0 20.1208C0 9.07564 8.955 0.120483 20 0.120483C31.045 0.120483 40 9.07398 40 20.1208Z" /> 3605 </svg> 3606 </a> 3607 </li> 3608 3609 3610 <li class="qk-display--il_bk"> 3611 <a target="_blank" rel="noopener noreferrer" href="https://www.instagram.com/SpearX_inc"> 3612 <svg 3613 class="instagram-svg" 3614 xmlns="http://www.w3.org/2000/svg" 3615 width="40" 3616 height="40" 3617 viewBox="0 0 40 40"> 3618 <rect class="qk-svg--footer_text" width="40" height="40" rx="20" /> 3619 <path class="qk-svg--footer_bg" d="M15.0302 8.08393C13.7534 8.14417 12.8814 8.34793 12.1192 8.64745C11.3303 8.95489 10.6616 9.36745 9.99636 10.0351C9.33107 10.7028 8.92139 11.3719 8.61611 12.162C8.32066 12.9259 8.1205 13.7986 8.0641 15.0761C8.0077 16.3536 7.99522 16.7643 8.00146 20.023C8.0077 23.2817 8.0221 23.6902 8.08402 24.9704C8.14498 26.2469 8.34802 27.1186 8.64755 27.8811C8.95547 28.67 9.36755 29.3384 10.0355 30.0039C10.7034 30.6694
361911.3721 31.0782 12.1641 31.3839C12.9273 31.6789 13.8002 31.88 15.0775 31.9359C16.3547 31.9918 16.7659 32.0048 20.0237 31.9986C23.2815 31.9923 23.6916 31.9779 24.9716 31.9172C26.2515 31.8565 27.1186 31.652 27.8813 31.3539C28.6702 31.0453 29.3391 30.6339 30.0042 29.9658C30.6692 29.2976 31.0787 28.628 31.3837 27.8374C31.6794 27.0742 31.8803 26.2013 31.9357 24.925C31.9916 23.6441 32.0048 23.2352 31.9986 19.9769C31.9923 16.7187 31.9777 16.3102 31.917 15.0305C31.8563 13.7508 31.653 12.8818 31.3537 12.1188C31.0453 11.3299 30.6337 10.662 29.966 9.99601C29.2983 9.33001 28.6282 8.92081 27.8379 8.61649C27.0742 8.32105 26.2018 8.11969 24.9245 8.06449C23.6472 8.00929 23.2361 7.99513 19.9771 8.00137C16.7181 8.00761 16.3101 8.02153 15.0302 8.08393ZM15.1703 29.7771C14.0003 29.7262 13.365 29.5318 12.9417 29.3691C12.381 29.1531 11.9817 28.892 11.5597 28.4742C11.1378 28.0563 10.8786 27.6555 10.6597 27.0961C10.4953 26.6727 10.2973 26.0381 10.2426 24.8681C10.1831 23.6036 10.1706 23.2239 10.1636 20.0201C10.1567 16.8164 10.1689 16.4372 10.2244 15.1721C10.2743 14.0031 10.4699 13.3671 10.6324 12.9439C10.8484 12.3826 11.1085 11.9839 11.5273 11.5623C11.9461 11.1406 12.3457 10.8809 12.9057 10.662C13.3286 10.4969 13.9631 10.3006 15.1327 10.2449C16.3982 10.1849 16.7774 10.1729 19.9807 10.1659C23.184 10.159 23.5642 10.171 24.8302 10.2267C25.9992 10.2775 26.6355 10.4712 27.0581 10.6347C27.619 10.8507 28.0181 11.1101 28.4398 11.5296C28.8615 11.9491 29.1214 12.3473 29.3403 12.9084C29.5057 13.3301 29.702 13.9644 29.7572 15.1347C29.8174 16.4002 29.8311 16.7796 29.8369 19.9827C29.8426 23.1857 29.8314 23.5661 29.7759 24.8307C29.7248 26.0007 29.5309 26.6362 29.3679 27.0601C29.1519 27.6205 28.8915 28.0201 28.4725 28.4415C28.0534 28.863 27.6543 29.1226 27.0941 29.3415C26.6717 29.5064 26.0364 29.7032 24.8679 29.7589C23.6023 29.8184 23.2231 29.8309 20.0186 29.8378C16.8141 29.8448 16.4361 29.8318 15.1706 29.7771M24.9531 13.5864C24.9535 13.8713 25.0385 14.1495 25.1971 14.3861C25.3558 14.6226 25.581 14.8068 25.8443 14.9154C26.1077 15.0239 26.3973 15.0519 26.6765 14.9959C26.9558 14.9398 27.2122 14.8022 27.4132 14.6004C27.6142 14.3986 27.7509 14.1418 27.806 13.8623C27.861 13.5828 27.8319 13.2933 27.7224 13.0304C27.6129 12.7675 27.4279 12.5429 27.1908 12.3851C26.9536 12.2274 26.675 12.1435 26.3902 12.144C26.0084 12.1448 25.6425 12.2972 25.373 12.5677C25.1035 12.8381 24.9524 13.2046 24.9531 13.5864ZM13.8386 20.012C13.8453 23.4152 16.6091 26.1677 20.0117 26.1613C23.4142 26.1548 26.1687 23.3912 26.1622 19.988C26.1557 16.5848 23.3911 13.8315 19.9881 13.8382C16.5851 13.8449 13.8321 16.6092 13.8386 20.012ZM16 20.0076C15.9985 19.2165 16.2315 18.4427 16.6698 17.784C17.108 17.1253 17.7317 16.6114 18.462 16.3072C19.1924 16.003 19.9965 15.9222 20.7727 16.075C21.549 16.2278 22.2625 16.6073 22.823 17.1656C23.3836 17.724 23.766 18.436 23.9218 19.2116C24.0777 19.9872 24.0001 20.7917 23.6988 21.5232C23.3975 22.2547 22.886 22.8804 22.2291 23.3213C21.5721 23.7621 20.7992 23.9983 20.0081 23.9998C19.4827 24.0009 18.9623 23.8985 18.4766 23.6985C17.9909 23.4985 17.5493 23.2047 17.1771 22.834C16.8049 22.4632 16.5094 22.0228 16.3074 21.5379C16.1054 21.0529 16.001 20.533 16 20.0076Z" /> 3620 </svg> 3621 </a> 3622 </li> 3623 3624 3625 <li class="qk-display--il_bk"> 3626 <a target="_blank" rel="noopener noreferrer" href="https://page.line.me/631cjtot"> 3627 <svg 3628 class="line-svg" 3629 xmlns="http://www.w3.org/2000/svg" 3630 width="40" 3631 height="40"
3632 viewBox="0 0 40 40"> 3633 <rect class="qk-svg--footer_text" width="40" height="40" rx="20" /> 3634 <path class="qk-svg--footer_bg" d="M32.5946 18.2214C32.5946 12.5857 26.9449 8 20.0002 8C13.0555 8 7.40576 12.5857 7.40576 18.2214C7.40576 23.2743 11.8873 27.5053 17.9396 28.3048C18.3506 28.392 18.908 28.575 19.0487 28.9269C19.1754 29.245 19.1303 29.7433 19.0881 30.0642C19.0881 30.0642 18.9417 30.9537 18.908 31.1423C18.8517 31.4604 18.6546 32.3866 20.0002 31.8207C21.343 31.2549 27.2545 27.5503 29.895 24.5101C31.7191 22.5058 32.5946 20.4762 32.5946 18.2214Z" /> 3635 <path class="qk-svg--footer_text" d="M17.4413 15.4965H16.5574C16.4223 15.4965 16.3125 15.6062 16.3125 15.7414V21.2279C16.3125 21.363 16.4223 21.4728 16.5574 21.4728H17.4413C17.5764 21.4728 17.6862 21.363 17.6862 21.2279V15.7414C17.6862 15.6062 17.5764 15.4965 17.4413 15.4965Z" /> 3636 <path class="qk-svg--footer_text" d="M23.5219 15.4965H22.638C22.5028 15.4965 22.3931 15.6063 22.3931 15.7414V19.0012L19.8792 15.6063C19.8736 15.5978 19.868 15.5894 19.8595 15.5809C19.8595 15.5809 19.8595 15.5809 19.8595 15.5781C19.8539 15.5725 19.8483 15.5668 19.8455 15.564C19.8426 15.564 19.8426 15.5612 19.8398 15.5584C19.8342 15.5556 19.8314 15.55 19.8258 15.5471C19.8229 15.5443 19.8229 15.5443 19.8201 15.5415C19.8173 15.5387 19.8117 15.5359 19.8089 15.5331C19.8061 15.5303 19.8032 15.5303 19.8004 15.5274C19.7948 15.5246 19.792 15.5218 19.7863 15.519C19.7835 15.519 19.7807 15.5162 19.7779 15.5162C19.7723 15.5134 19.7695 15.5105 19.7638 15.5105C19.761 15.5105 19.7582 15.5077 19.7554 15.5077C19.7498 15.5049 19.7469 15.5049 19.7413 15.5021C19.7385 15.5021 19.7357 15.5021 19.7329 15.4993C19.7272 15.4993 19.7244 15.4965 19.7188 15.4965C19.716 15.4965 19.7132 15.4965 19.7075 15.4937C19.7019 15.4937 19.6991 15.4937 19.6935 15.4908C19.6878 15.4908 19.685 15.4908 19.6822 15.4908C19.6794 15.4908 19.6766 15.4908 19.6737 15.4908H18.7898C18.6547 15.4908 18.5449 15.6006 18.5449 15.7358V21.2222C18.5449 21.3574 18.6547 21.4671 18.7898 21.4671H19.6737C19.8089 21.4671 19.9187 21.3574 19.9187 21.2222V17.9709L22.4353 21.3714C22.4522 21.3968 22.4747 21.4165 22.4972 21.4305C22.4972 21.4305 22.5 21.4305 22.5 21.4334C22.5057 21.4362 22.5113 21.439 22.5141 21.4418C22.5169 21.4418 22.5197 21.4446 22.5226 21.4446C22.5254 21.4474 22.531 21.4474 22.5338 21.4503C22.5366 21.4531 22.5423 21.4531 22.5451 21.4559C22.5479 21.4559 22.5507 21.4587 22.5535 21.4587C22.5591 21.4615 22.5648 21.4615 22.5704 21.4643H22.5732C22.5929 21.47 22.6154 21.4728 22.6352 21.4728H23.5191C23.6542 21.4728 23.764 21.363 23.764 21.2279V15.7414C23.7668 15.6063 23.657 15.4965 23.5219 15.4965Z" /> 3637 <path class="qk-svg--footer_text" d="M15.313 20.099H12.9118V15.7414C12.9118 15.6062 12.802 15.4965 12.6669 15.4965H11.783C11.6479 15.4965 11.5381 15.6062 11.5381 15.7414V21.2279C11.5381 21.2926 11.5634 21.3545 11.6056 21.3968L11.6085 21.3996L11.6113 21.4024C11.6563 21.4446 11.7154 21.4699 11.7802 21.4699H15.3102C15.4453 21.4699 15.5551 21.3602 15.5551 21.225V20.3411C15.5579 20.2116 15.4482 20.099 15.313 20.099Z" /> 3638 <path class="qk-svg--footer_text" d="M28.4001 16.8702C28.5352 16.8702 28.645 16.7604 28.645 16.6253V15.7414C28.645 15.6062 28.5352 15.4965 28.4001 15.4965H24.87C24.8053 15.4965 24.7433 15.5218 24.7011 15.5668L24.6983 15.5697C24.6983 15.5725 24.6955 15.5725 24.6955 15.5753C24.6533 15.6203 24.6279 15.6794 24.6279 15.7442V21.2307C24.6279 21.2954 24.6533 21.3573 24.6955 21.3996L24.6983 21.4024L24.7011 21.4052C24.7462 21.4474 24.8053 21.4756 24.87 21.4756H28.4001C28.5352 21.4756 28.645 21.3658 28.645 21.2307V20.3467C28.645 20.2116 28.5352 20.1018 28.4001 20.1018H25.9988V19.1757H28.4001C28.5352 19.1757 28.645 19.0659 28.645 18.9308V18.0469C28.645 17.9118 28.5352 17.802 28.4001 17.802H25.9988V16.8758H28.4001V16.8702Z" /> 3639 </svg> 3640 </a> 3641 </li> 3642 3643 3644 </ul> 3645 </div> 3646 </div> 3647 </div> 3648 </div> 3649 </div> 3650 3651 <div class="copyright qk-text--footer_text qk-bd--footer_text qk-text--left qk-bd_t--default"> 3652 <div class="qk-container container qk-fw--500">
3653 <span>Copyright ©</span> 3654 <a class="qk-text--link" href="/"> 3655 <span>SpearX è²ç¹ç§æ</span> 3656 </a> 3657 <span>All Rights Reserved.</span> 3658 <span>Designed by 3659 </span> 3660 <a 3661 class="qk-text--link" 3662 href="https://www.cyberbiz.io?utm_source=poweredbycyberbiz" 3663 target="_blank" 3664 rel="noopener noreferrer" 3665 title="Designed by CYBERBIZ">CYBERBIZ</a>. 3666 </div> 3667 </div> 3668 3669</footer>
3670<script> 3671 $(document).ready(function() { 3672 let isDynamicLoading = false; 3673 3674 let menusData = { 3675 3676 3677 "footer": { 3678 3679 "type": "items", 3680 "data": [ 3681 3682 3683 3684 { 3685 "title": "æåæé»", 3686 "url": "/pages/æåæé»", 3687 "item_type": "page" 3688 }, 3689 3690 { 3691 "title": "éæè²¨é ç¥", 3692 "url": "/pages/return-and-exchange", 3693 "item_type": "page" 3694 }, 3695 3696 { 3697 "title": "é±ç§æ¿ç", 3698 "url": "/pages/privacy-policy", 3699 "item_type": "page" 3700 }, 3701 3702 { 3703 "title": "æåæ¢æ¬¾", 3704 "url": "/pages/terms", 3705 "item_type": "terms" 3706 }, 3707 3708 { 3709 "title": "å è²¬è²æ", 3710 "url": "/pages/disclaimer", 3711 "item_type": "page" 3712 }, 3713 3714 { 3715 "title": "æ¥è©¢", 3716 "url": "/search", 3717 "item_type": "search" 3718 } 3719 3720 3721 ] 3722 3723 }, 3724 3725 3726 3727 3728 }; 3729 3730 if (isDynamicLoading) { 3731 window.DynamicLoading.setupComponent({ 3732 sectionId: '#footer', 3733 callbackData:{ 3734 section: {"type":"footer","visible":true,"settings":{"footer_link":"footer","display_facebook":true,"shop_facebook":"https://www.facebook.com/SpearX","display_instagram":true,"shop_instagram":"https://www.instagram.com/SpearX_inc","display_line":true,"shop_line":"https://page.line.me/631cjtot","display_youtube":false,"shop_youtube":"https://www.youtube.com/","footer_link_arrangement":"display_y","display_facebook_fan_block":true},"block_order":["default_link_list","default_contact_info"],"blocks":{"default_link_list":{"type":"link_list_setting","custom_name":"é¸å®","thumbnail":"list","draggable":true,"visible":true,"settings":{"footer_link":"footer","dict_link_list_block_title":"éæ¼æå"}},"default_contact_info":{"type":"contact_info_setting","custom_name":"è¯çµ¡è³è¨","thumbnail":"contactInfo","draggable":true,"visible":true,"settings":{"display_phone":"true","display_fax_number":"true","shop_fax_number":"02-2709-9009","display_shop_email":"true","display_shop_address":"true","display_office_time":"true","shop_office_time":"é±ä¸è³é±äº12:30-19:30 åå®åæ¥å ¬ä¼","dict_contact_info_block_title":"è¯çµ¡è³è¨","dict_phone_number":"02-2709-2299","dict_shop_email":"[email protected]","dict_shop_address":"å°åå¸å¤§å®å建ååè·¯ä¸æ®µ332è"}}},"custom_name":"é è ³"}, 3735 shop: { 3736 name: 'SpearX è²ç¹ç§æ', 3737 cyberbiz_link: 'https://www.cyberbiz.io?utm_source=poweredbycyberbiz', 3738 facebook_fan_page: 'https://www.facebook.com/192162680810503', 3739 }, 3740 menus: menusData, 3741 is_display_facebook_fan_block: true 3742 }, 3743 entryName:'renderFooterSection', 3744 source:'//cdn1.cybassets.com/frontend/shop/footerSection-ec858cfa815323bb.js', 3745 }); 3746 } 3747 }); 3748</script>
3748 3749 3750<!-- cyb_snippet _tracking_code start --> 3751
3751<script> 3752 window.fbAsyncInit = function() { 3753 FB.init({ 3754 appId : '', 3755 xfbml : true, 3756 version : 'v24.0', 3757 }); 3758 }; 3759 (function(d, s, id){ 3760 var js, fjs = d.getElementsByTagName(s)[0]; 3761 if (d.getElementById(id)) {return;} 3762 js = d.createElement(s); 3763 js.id = id; 3764 js.src = 'https://connect.facebook.net/zh_TW/sdk.js'; 3765 fjs.parentNode.insertBefore(js, fjs); 3766 }(document, 'script', 'facebook-jssdk')); 3767 </script>
3767 3768 3769
3770<script> 3771 // for scupio 3772 if (document.querySelector("meta[name=\"scupio_mid\"]")) { 3773 mid = document.querySelector("meta[name=\"scupio_mid\"]").content; 3774 } else { 3775 mid = ""; 3776 } 3777 if (!window.is_scupio_sent && mid) { 3778 window._bwtm = window._bwtm || [] 3779 window._bwtm.push({ 3780 "mid": mid, 3781 "uid": "" 3782 }); 3783 } 3784</script>
3784 3785 3786<!-- cyb_snippet _tracking_code end --> 3787
3788<script> 3789 $(document).ready(function(){ 3790 if(window.location.pathname != '' && window.location.pathname != '/' ){ 3791 document.getElementById('index-recommendation').style.display = 'none' 3792 } 3793 }); 3794</script>
3794 3795 3796 3797 3798 <!-- Fast-Events --> 3799 <!-- cyb_snippet fast_events start --> 3800 3801
3802<script src='//cdn1.cybassets.com/frontend/shop/beta_theme/js/fast_events-ec858cfa815323bb.js' type='text/javascript'></script>
3802 3803<link href='//cdn1.cybassets.com/frontend/shop/beta_theme/css/fast_events-ec858cfa815323bb.css' rel='stylesheet' type='text/css' media='all' /> 3804 3805<!-- cyb_snippet fast_events end --> 3806 3807 <div class="bottom-right qk-pos--fixed"> 3808 <!-- gototop --> 3809 <div id="gototop" class="qk-display--none qk-text--center"> 3810 <a href="javascript:void(0)" class="qk-circle qk-circle--lg qk-pos--relative qk-text--center"> 3811 <i class="fas fa-chevron-up"></i> 3812 </a> 3813 </div> 3814 3815 <!-- popup --> 3816 3817 3818 3819 3820<div id="popup-wrapper" class="qk-display--none"></div> 3821 3822<template id="popup-template"> 3823 <div 3824 :class="status" 3825 v-if="hasContent" 3826 id="popup-section" 3827 > 3828 <transition name="backdrop"> 3829 <div 3830 v-if="shouldShowPopup" 3831 @click.capture="minifyPopup" 3832 id="popup-backdrop" 3833 class="qk-w--100vw qk-h--100vh qk-pos--fixed qk-t--0 qk-l--0 qk-tst" 3834 > 3835 </div> 3836 </transition> 3837 <transition name="onShow"> 3838 <div 3839 @click.self="showPopup" 3840 @transitionstart="updateGameStatus('start', this)" 3841 @transitionend="updateGameStatus('end', this)" 3842 class="popup-content qk-display--flex qk-align--center qk-tst qk-tst_dur--30 qk-tst_timing--ease_o" 3843 > 3844 <div 3845 v-for="block in blocks" 3846 :key="block.id" 3847 :class="[block.type, minifiedBlockClasses, block.settings.icon_size]" 3848 class="block qk-tst qk-tst_dur--30 qk-tst_timing--ease_o qk-of--auto" 3849 > 3850 <div v-if="block.type === 'image'" class="qk-pos--rel"> 3851 <img 3852 v-show="!shouldShowPopup" 3853 :src="block.settings.dict_icon_image_url" 3854 class="qk-tst qk-tst_dur--30 qk-tst_timing--ease_o" 3855 alt="popup button" 3856 > 3857 <a 3858 v-show="shouldShowPopup" 3859 :href="block.settings.dict_link" 3860 :target="block.settings.target" 3861 :rel="block.settings.rel" 3862 class="qk-display--flex qk-align--center" 3863 @click="linkClicked" 3864 > 3865 <picture> 3866 <source :srcset="block.settings.dict_mobile_image_url" media="(max-width: 576px)"> 3867 <source :srcset="block.settings.dict_tablet_image_url" media="(max-width: 992px)"> 3868 <img 3869 :src="block.settings.dict_image_url" 3870 class="qk-tst qk-tst_dur--30 qk-tst_timing--ease_o" 3871 alt="popup picture" 3872 /> 3873 </picture> 3874 </a> 3875 </div> 3876 <div v-if="block.type === 'video'"> 3877 <iframe 3878 :src="block.settings.dict_video_link" 3879 frameborder="0" 3880 class="qk-center--y qk-w--100 qk-h--100" 3881 ></iframe> 3882 </div> 3883 <div v-if="block.type === 'game'"> 3884 <div v-show="gameStatus === 'show'" :class="{ 'show-game': gameStatus === 'show' }"> 3885 <iframe 3886 class="cb-game-iframe iframe-loading" 3887 :src="getGameIframeSrc(block)" 3888 style="border: none;" 3889 > 3890 Loading 3891 </iframe> 3892 </div> 3893 <div v-show="gameStatus === 'minified'"> 3894 <img 3895 src="//cdn1.cybassets.com/game_assets/game_minified_new.png" 3896 class="qk-h--100 qk-w--100" 3897 alt="game minified icon" 3898 /> 3899 </div> 3900 </div> 3901 <div 3902 v-if="block.type === 'carousel'" 3903 :id="`popup-carousel-${block.id}`" 3904 > 3905 </div> 3906 </div> 3907 </div> 3908 </transition> 3909 <transition name="backdrop"> 3910 <div 3911 v-if="shouldShowPopup" 3912 @click.capture="minifyPopup" 3913 class="minify-popup qk-circle qk-circle--md qk-text--black qk-bg--white qk-bd--default qk-bd--border qk-text--center qk-cursor--pointer qk-pos--fixed" 3914 > 3915 </div> 3916 </transition> 3917 </div> 3918</template> 3919
3920<script> 3921 $(document).ready(function() { 3922 const CDN_HOST = '//cdn1.cybassets.com'; 3923 const section = {"type":"popup","visible":true,"blocks":{"popup_block_1":{"type":"image","visible":false,"settings":{"dict_image_url":""},"custom_name":"åç"}},"block_order":[],"settings":{},"custom_name":"å½çªå»£å"}; 3924 var popupSection = Vue.createApp({ 3925 template: '#popup-template', 3926 delimiters: ['${', '}'], 3927 data() { 3928 const isOmniauthPage = ['omniauth_terms_agreement', 'omniauth_mobile/'] 3929 .some(path => location.pathname.includes(path)); 3930 return { 3931 status: 'minified', 3932 gameStatus: 'show', 3933 blocks: isOmniauthPage 3934 ? [] 3935 : section.block_order && section.block_order.reduce( 3936 function(acc, blockId) { 3937 const block = section.blocks[blockId]; 3938 if (block && block.visible) { 3939 acc.push({ 3940 ...block, 3941 id: blockId, 3942 }); 3943 } 3944 return acc; 3945 }, 3946 [], 3947 ), 3948 hasAddedGameScript: false, 3949 }; 3950 }, 3951 computed: { 3952 hasContent: function() { 3953 return !!(this.blocks && this.blocks.length > 0); 3954 }, 3955 minifiedBlockClasses: function() { 3956 return this.status === 'minified' ? 'qk-pointer--none qk-unselectable' : ''; 3957 }, 3958 shouldShowPopup: function() { 3959 return this.status === 'show'; 3960 } 3961 }, 3962 methods: { 3963 unhidePopup: function(storedStatus) { 3964 this.status = storedStatus; 3965 $('#popup-wrapper').removeClass('qk-display--none'); 3966 }, 3967 showPopup: function() { 3968 if (this.status !== 'show') { 3969 this.status = 'show'; 3970 this.saveStatus(this.status); 3971 } 3972 }, 3973 minifyPopup: function() { 3974 this.status = 'minified'; 3975 this.saveStatus('minified'); 3976 }, 3977 loadStatus: function() { 3978 return JSON.parse(localStorage.getItem('popupStatus')); 3979 }, 3980 saveStatus: function(status) { 3981 if (status) { 3982 localStorage.setItem('popupStatus', JSON.stringify({ 3983 status: status, 3984 setTime: new Date().getTime(), 3985 })); 3986 } 3987 }, 3988 linkClicked: function() { 3989 this.saveStatus('minified'); 3990 }, 3991 parseVideoLink: function(settings) { 3992 settings.dict_video_link = themeHelper.parseYtUrl(settings.dict_video_link); 3993 }, 3994 setupImageSrc: function (settings) { 3995 settings.dict_image_url = this.addCdnHost(settings.dict_image_url); 3996 if (settings.dict_tablet_image_url) { 3997 settings.dict_tablet_image_url = this.addCdnHost(settings.dict_tablet_image_url); 3998 } 3999 if (settings.dict_mobile_image_url) { 4000 settings.dict_mobile_image_url = this.addCdnHost(settings.dict_mobile_image_url); 4001 } 4002 settings.dict_icon_image_url = this.addCdnHost(settings.dict_icon_image_url) || settings.dict_image_url; 4003 }, 4004 addCdnHost: function(url) { 4005 if (!url) { 4006 return url; // only add cdn host if url is not empty 4007 } 4008 4009 try { 4010 new URL(url); 4011 return url; // already a valid url, cdn host not needed 4012 } catch { 4013 return `${CDN_HOST}${url}`; 4014 } 4015 }, 4016 initStatus: function() { 4017 let newStatus = 'show'; 4018 const popupStatus = this.loadStatus(); 4019 const currentTime = new Date().getTime(); 4020 const oneDay = 1000 * 60 * 60 * 24; 4021 const hasStoredStatus = popupStatus && currentTime - popupStatus.setTime < oneDay; 4022 const redirectedByGameLogin = !this.hasRedirectUrl() && this.redirectedByGameLogin(); 4023 const isLoggingIn = this.isLoggingIn(); 4024 const isCartPage = window.location.pathname.split('/').includes('carts'); 4025 4026 if (hasStoredStatus && !redirectedByGameLogin) { 4027 newStatus = popupStatus.status; 4028 } 4029 4030 if (isLoggingIn) { 4031 newStatus = 'minified'; 4032 } else { 4033 localStorage.removeItem('redirectedByPopup'); 4034 } 4035 4036 setTimeout(() => { 4037 this.status = newStatus; 4038 this.gameStatus = newStatus; 4039 this.saveStatus(newStatus); 4040 if(!isCartPage){ 4041 this.unhidePopup(newStatus); 4042 } 4043 }, 1000); 4044 }, 4045 initBlocks: function() { 4046 if (this.hasContent) { 4047 this.blocks.forEach(block => { 4048 switch(block.type) { 4049 case 'image': 4050 this.setupImageSrc(block.settings); 4051 4052 const isOpenInNewTab = block.settings.link_open_in_new_tab; 4053 if (isOpenInNewTab) { 4054 block.settings.target = '_blank'; 4055 block.settings.rel = 'noopener noreferrer'; 4056 } 4057 4058 break; 4059 case 'video': 4060 this.parseVideoLink(block.settings); 4061 break; 4062 } 4063 }) 4064 } 4065 }, 4066 getGameIframeSrc: function (block) { 4067 return `/games/${block.settings.dict_game_handle}` 4068 }, 4069 updateGameStatus: function(type, element) { 4070 if ( 4071 (type === 'start' && this.status === 'minified') 4072 || (type === 'end' && this.status === 'show') 4073 ) { 4074 this.gameStatus = this.status; 4075 } 4076 }, 4077 setupGameRedirects: function() { 4078 window.addEventListener('pagehide', () => { 4079 const isGameActive = document.body.getElementsByClassName('show-game').length; 4080 if (isGameActive) { 4081 localStorage.setItem('redirectedByPopup', 'true'); 4082 this.saveStatus('minified'); 4083 } 4084 }); 4085 }, 4086 hasRedirectUrl: function() { 4087 return (new URLSearchParams(location.search)).has('redirect_url'); 4088 }, 4089 redirectedByGameLogin: function() { 4090 return localStorage.getItem('redirectedByPopup'); 4091 }, 4092 isLoggingIn: function() { 4093 const loginRelatedPathnames = [ 4094 'account/signup', 4095 'account/login', 4096 'account/customer/password/new', 4097 'pages/terms' 4098 ]; 4099 return loginRelatedPathnames.some(path => location.pathname.includes(path)); 4100 } 4101 }, 4102 created: function() { 4103 this.initStatus(); 4104 this.initBlocks(); 4105 this.setupGameRedirects(); 4106 }, 4107 mounted: function() { 4108 this.blocks.forEach((block) => { 4109 if (block.type === 'carousel' && block.settings.dict_c
4109arousel) { 4110 renderCarousel(`#popup-carousel-${block.id}`, { 4111 title: block.settings.dict_carousel, 4112 CDN_HOST, 4113 onLinkClick: () => this.linkClicked(), 4114 }); 4115 } 4116 }); 4117 }, 4118 }); 4119 popupSection.mount('#popup-wrapper'); 4120 }); 4121</script>
4121 4122 4123 4124 4125 </div> 4126 4127 <!-- ajaxloading --> 4128 <div id="ajaxloading" class="qk-display--none qk-h--100vh qk-w--100vw qk-l--0 qk-t--0 qk-pos--fixed"> 4129 <div class="ajaxbody qk-pos--abs qk-l--50 qk-t--50 qk-text--center"> 4130 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="73.4" height="73.4" viewBox="0 0 73.4 73.4"> 4131 <circle class="circle" fill="none" stroke="#898989" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" cx="36.7" cy="36.7" r="35.2"/> 4132 <polyline class="success_path" fill="none" stroke="#898989" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="23.7,36.8 32.4,45.4 49.7,28 "/> 4133 <path class="success_icon" fill="#898989" d="M32.5,46.9c-0.4,0-0.8-0.2-1.1-0.4l-8.6-8.6c-0.6-0.6-0.6-1.5,0-2.1s1.5-0.6,2.1,0l7.5,7.5L48.6,27c0.6-0.6,1.5-0.6,2.1,0s0.6,1.5,0,2.1L33.5,46.5C33.2,46.7,32.9,46.9,32.5,46.9L32.5,46.9z"/> 4134 <line class="fail_path" fill="none" stroke="#898989" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="26.6" y1="26.6" x2="46.8" y2="46.8"/> 4135 <line class="fail_path" fill="none" stroke="#898989" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" x1="46.8" y1="26.6" x2="26.6" y2="46.8"/> 4136 <path class="fail_icon" fill="#898989" d="M38.7,36.7l9.1-9.1c0.6-0.6,0.6-1.5,0-2.1s-1.5-0.6-2.1,0l-9.1,9.1l-9.1-9.1c-0.6-0.6-1.5-0.6-2.1,0s-0.6,1.5,0,2.1l9.1,9.1l-9.1,9.1c-0.6,0.6-0.6,1.5,0,2.1c0.3,0.3,0.7,0.4,1.1,0.4s0.8-0.1,1.1-0.4l9.1-9.1l9.1,9.1c0.3,0.3,0.7,0.4,1.1,0.4s0.8-0.1,1.1-0.4c0.6-0.6,0.6-1.5,0-2.1L38.7,36.7z"/> 4137 </svg> 4138 <div class="success_msg title qk-display--none qk-pos--abs qk-l--0 qk-w--100 qk-text--center">å·²å å ¥è³¼ç©è»</div> 4139 <div class="success_update_msg title qk-display--none qk-pos--abs qk-l--0 qk-w--100 qk-text--center">å·²æ´æ°è³¼ç©è»</div> 4140 <div class="fail_msg title qk-display--none qk-pos--abs qk-l--0 qk-w--100 qk-text--center">網路ç°å¸¸ï¼è«éæ°æ´ç</div> 4141 </div> 4142 </div> 4143 4144
4145<script> 4146var newArrivalList = [ 4147 '/products/d7', 4148]; 4149 4150var onSaleSrc = 'https://cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3NzY0MTQ5OTJfb25zYWxlX1NxdWFyZV9pY29uLnBuZy5wbmciXV0.png?sha=bb9aab613664cc24'; 4151var newArrivalSrc = 'https://cdn1-next.cybassets.com/media/W1siZiIsIjY3MjEvYXR0YWNoZWRfcGhvdG9zLzE3NzY0MTQ5OTJfbmV3X2ljb24ucG5nLnBuZyJdXQ.png?sha=67624ff0de940a5e'; 4152 4153function hideSoldOutPrice() { 4154 document.querySelectorAll('button.btn-soldout').forEach(function(btn) { 4155 var parent = btn.parentElement; 4156 if (parent) { 4157 var priceBlock = parent.querySelector('.price-block'); 4158 if (priceBlock) { 4159 priceBlock.style.visibility = 'hidden'; 4160 priceBlock.style.height = 'auto'; 4161 } 4162 } 4163 btn.style.display = 'block'; 4164 }); 4165} 4166 4167document.addEventListener('DOMContentLoaded', hideSoldOutPrice); 4168setTimeout(hideSoldOutPrice, 500); 4169setTimeout(hideSoldOutPrice, 1500); 4170 4171var observer = new MutationObserver(function() { 4172 hideSoldOutPrice(); 4173 4174 document.querySelectorAll('.on-sale img').forEach(function(img) { 4175 var links = img.closest('.product') ? img.closest('.product').querySelectorAll('a[href]') : []; 4176 var isNew = false; 4177 links.forEach(function(link) { 4178 var href = link.getAttribute('href') || ''; 4179 if (newArrivalList.some(function(k) { return href === k; })) isNew = true; 4180 }); 4181 var targetSrc = isNew ? newArrivalSrc : onSaleSrc; 4182 img.src = targetSrc; 4183 if (window.innerWidth <= 767) { 4184 img.style.width = '70px'; 4185 img.style.height = '70px'; 4186 } else { 4187 img.style.width = '100px'; 4188 img.style.height = '100px'; 4189 } 4190 }); 4191}); 4192 4193observer.observe(document.body, { childList: true, subtree: true }); 4194</script>
4194 4195 4196<!-- GA4 é»ååå追蹤 -->
4197<script> 4198(function() { 4199 var path = window.location.pathname; 4200 4201 // ===== add_to_cart 追蹤 ===== 4202 document.addEventListener('click', function(e) { 4203 var btn = e.target.closest('button.cart-button, button.product-btn'); 4204 if (!btn) return; 4205 4206 var price = parseFloat(btn.getAttribute('data-price')) || 0; 4207 var itemId = btn.getAttribute('data-handle') || ''; 4208 var itemName = btn.getAttribute('data-name') || ''; 4209 var itemBrand = btn.getAttribute('data-brand') || 'SpearX'; 4210 var itemCategory = btn.getAttribute('data-category') || ''; 4211 var itemListId = btn.getAttribute('data-collection') || ''; 4212 4213 window.dataLayer = window.dataLayer || []; 4214 window.dataLayer.push({ ecommerce: null }); 4215 window.dataLayer.push({ 4216 event: 'add_to_cart', 4217 ecommerce: { 4218 currency: 'TWD', 4219 value: price, 4220 items: [{ 4221 item_id: itemId, 4222 item_name: itemName, 4223 item_brand: itemBrand, 4224 item_category: itemCategory, 4225 price: price, 4226 quantity: 1, 4227 item_list_id: itemListId 4228 }] 4229 } 4230 }); 4231 }); 4232 4233 // ===== view_item 追蹤ï¼ååé /products/...ï¼ ===== 4234 if (path.indexOf('/products/') === 0) { 4235 window.dataLayer = window.dataLayer || []; 4236 window.dataLayer.push({ ecommerce: null }); 4237 window.dataLayer.push({ 4238 event: 'view_item', 4239 ecommerce: { 4240 currency: 'TWD', 4241 value: 0.0, 4242 items: [{ 4243 item_id: '', 4244 item_name: '', 4245 item_brand: '', 4246 item_category: '', 4247 price: 0.0 4248 }] 4249 } 4250 }); 4251 } 4252 4253 // ===== begin_checkout 追蹤ï¼è³¼ç©è»é /carts/...ï¼ ===== 4254 if (path.indexOf('/carts/') === 0) { 4255 window.dataLayer = window.dataLayer || []; 4256 window.dataLayer.push({ ecommerce: null }); 4257 window.dataLayer.push({ 4258 event: 'begin_checkout', 4259 ecommerce: { 4260 currency: 'TWD', 4261 value: 0.0, 4262 items: [ 4263 4264 ] 4265 } 4266 }); 4267 } 4268 4269})(); 4270</script>
4270 4271<!-- /GA4 é»ååå追蹤 --> 4272 4273
4273<script src="//cdn1.cybassets.com/assets/referral-code-trace-5fcbbe026a61c36b5f09a1615a1c168688205205d9d3e7ee854181a66b64a6ed.js"></script>
4273 4274
4274<script> 4275 cyb.push({ 4276 'event': 'productImpressions', 4277 'ecommerce':{ 4278 'currencyCode': 'TWD', 4279 'impressions':[{"id":434174,"name":"æ¿æç¨è³ç½©/è³å¥","price":400.0,"brand":null,"category":null,"variant":"","list":"Collection: è³æ©å¨é","position":1},{"id":33383742,"name":"ç½è 鲿°´æ¶ç´ç","price":199.0,"brand":null,"category":null,"variant":"","list":"Collection: è³æ©å¨é","position":2}] 4280 } 4281 }) 4282 </script>
4282 4283 </body> 4284 4285 <!-- GetButton.io widget -->
4286<script type="text/javascript"> 4287 (function () { 4288 var options = { 4289 facebook: "192162680810503", 4290 line: "//page.line.me/631cjtot", 4291 call_to_action: "Message us", 4292 button_color: "#129BF4", 4293 position: "right", 4294 order: "line,facebook", 4295 }; 4296 var proto = 'https:', host = "getbutton.io", url = proto + '//static.' + host; 4297 var s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = url + '/widget-send-button/js/init.js'; 4298 s.onload = function () { WhWidgetSendButton.init(host, proto, options); }; 4299 var x = document.getElementsByTagName('script')[0]; x.parentNode.insertBefore(s, x); 4300 })(); 4301</script>
4301 4302<!-- /GetButton.io widget --> 4303 4304
4304<script src='//cdn1.cybassets.com/frontend/shop/beta_theme/js/sub_vendor-ec858cfa815323bb.js' type='text/javascript'></script>
4304 4305
4305<script src='//cdn1.cybassets.com/frontend/shop/beta_theme/js/theme_helper-ec858cfa815323bb.js' type='text/javascript'></script>
4305 4306 4307 <!-- theme assets --> 4308
4308<script src='//cdn1.cybassets.com/s/files/6721/theme/85897/assets/js/1666255330_0f33cc6c_main.js?1666255330' type='text/javascript'></script>
4308 4309
4309<script src='//cdn1.cybassets.com/frontend/shop/beta_theme/js/theme-ec858cfa815323bb.js' type='text/javascript'></script>
4309 4310 4311 <!-- for cache --> 4312
4312<script src='//cdn1.cybassets.com/frontend/shop/beta_theme/js/cacheable-ec858cfa815323bb.js' type='text/javascript'></script>
4312 4313</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.