PageSourceSearch

https://www.spearx-inc.com/collections/spin-off-product

html spearx-inc.com collected 2026-10-08 15:30:26 UTC 224,455 bytes, 4,313 lines download raw bytes

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.