🔥Black Friday & Christmas Sale 70% Off ✋️ Neck & Shoulder Massager

$99.00
$300.00
const TAG = "spz-custom-product-automatic"; class SpzCustomProductAutomatic extends SPZ.BaseElement { constructor(element) { super(element); this.variant_id = '04ee7256-0314-42f7-8440-e765742cc499'; this.isRTL = SPZ.win.document.dir === 'rtl'; } static deferredMount() { return false; } buildCallback() { this.action_ = SPZServices.actionServiceForDoc(this.element); this.templates_ = SPZServices.templatesForDoc(this.element); this.xhr_ = SPZServices.xhrFor(this.win); this.setupAction_(); this.viewport_ = this.getViewport(); } mountCallback() { this.init(); // 监听事件 this.bindEvent_(); } async init() { this.handleFitTheme(); const data = await this.getDiscountList(); this.renderApiData_(data); } async getDiscountList() { const productId = '8523ae62-f5f2-4c4a-9926-920fccfde754'; const variantId = this.variant_id; const productType = 'default'; const reqBody = { product_id: productId, variant_id: variantId, discount_method: "DM_AUTOMATIC", customer: { customer_id: window.C_SETTINGS.customer.customer_id, email: window.C_SETTINGS.customer.customer_email }, product_type: productType } const url = `/api/storefront/promotion/display_setting/text/list`; const data = await this.xhr_.fetchJson(url, { method: "post", body: reqBody }).then(res => { return res; }).catch(err => { this.setContainerDisabled(false); }) return data; } async renderDiscountList() { this.setContainerDisabled(true); const data = await this.getDiscountList(); this.setContainerDisabled(false); // 重新渲染 抖动问题处理 this.renderApiData_(data); } clearDom() { const children = this.element.querySelector('*:not(template)'); children && SPZCore.Dom.removeElement(children); } async renderApiData_(data) { const parentDiv = document.querySelector('.automatic_discount_container'); const newTplDom = await this.getRenderTemplate(data); if (parentDiv) { parentDiv.innerHTML = ''; parentDiv.appendChild(newTplDom); } else { console.log('automatic_discount_container is null'); } } doRender_(data) { const renderData = data || {}; return this.templates_ .findAndRenderTemplate(this.element, renderData) .then((el) => { this.clearDom(); this.element.appendChild(el); }); } async getRenderTemplate(data) { const renderData = data || {}; return this.templates_ .findAndRenderTemplate(this.element, { ...renderData, isRTL: this.isRTL }) .then((el) => { this.clearDom(); return el; }); } setContainerDisabled(isDisable) { const automaticDiscountEl = document.querySelector('.automatic_discount_container_outer'); if(isDisable) { automaticDiscountEl.setAttribute('disabled', ''); } else { automaticDiscountEl.removeAttribute('disabled'); } } // 绑定事件 bindEvent_() { window.addEventListener('click', (e) => { let containerNodes = document.querySelectorAll(".automatic-container .panel"); let bool; Array.from(containerNodes).forEach((node) => { if(node.contains(e.target)){ bool = true; } }) // 是否popover面板点击范围 if (bool) { return; } if(e.target.classList.contains('drowdown-icon') || e.target.parentNode.classList.contains('drowdown-icon')){ return; } const nodes = document.querySelectorAll('.automatic-container'); Array.from(nodes).forEach((node) => { node.classList.remove('open-dropdown'); }) // 兼容主题 this.toggleProductSticky(true); }) // 监听变体变化 document.addEventListener('dj.variantChange', async(event) => { // 重新渲染 const variant = event.detail.selected; if (variant.product_id == '8523ae62-f5f2-4c4a-9926-920fccfde754' && variant.id != this.variant_id) { this.variant_id = variant.id; this.renderDiscountList(); } }); } // 兼容主题 handleFitTheme() { // top 属性影响抖动 let productInfoEl = null; if (window.SHOPLAZZA.theme.merchant_theme_name === 'Wind' || window.SHOPLAZZA.theme.merchant_theme_name === 'Flash') { productInfoEl = document.querySelector('.product-info-body .product-sticky-container'); } else if (window.SHOPLAZZA.theme.merchant_theme_name === 'Hero') { productInfoEl = document.querySelector('.product__info-wrapper .properties-content'); } if(productInfoEl){ productInfoEl.classList.add('force-top-auto'); } } // 兼容 wind/flash /hero 主题 (sticky属性影响 popover 层级展示, 会被其他元素覆盖) toggleProductSticky(isSticky) { let productInfoEl = null; if (window.SHOPLAZZA.theme.merchant_theme_name === 'Wind' || window.SHOPLAZZA.theme.merchant_theme_name === 'Flash') { productInfoEl = document.querySelector('.product-info-body .product-sticky-container'); } else if (window.SHOPLAZZA.theme.merchant_theme_name === 'Hero') { productInfoEl = document.querySelector('.product__info-wrapper .properties-content'); } if(productInfoEl){ if(isSticky) { // 还原该主题原有的sticky属性值 productInfoEl.classList.remove('force-position-static'); return; } productInfoEl.classList.toggle('force-position-static'); } } setupAction_() { this.registerAction('handleDropdown', (invocation) => { const discount_id = invocation.args.discount_id; const nodes = document.querySelectorAll('.automatic-container'); Array.from(nodes).forEach((node) => { if(node.getAttribute('id') != `automatic-${discount_id}`) { node.classList.remove('open-dropdown'); } }) const $discount_item = document.querySelector(`#automatic-${discount_id}`); $discount_item && $discount_item.classList.toggle('open-dropdown'); // 兼容主题 this.toggleProductSticky(); }); } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, `${ TAG }.${ name }`, data || {}); this.action_.trigger(this.element, name, event); } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } } SPZ.defineElement(TAG, SpzCustomProductAutomatic);
Quantity
/** @private {string} */ class SpzCustomAnchorScroll extends SPZ.BaseElement { static deferredMount() { return false; } constructor(element) { super(element); /** @private {Element} */ this.scrollableContainer_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.viewport_ = this.getViewport(); this.initActions_(); } setTarget(containerId, targetId) { this.containerId = '#' + containerId; this.targetId = '#' + targetId; } scrollToTarget() { const container = document.querySelector(this.containerId); const target = container.querySelector(this.targetId); const {scrollTop} = container; const eleOffsetTop = this.getOffsetTop_(target, container); this.viewport_ .interpolateScrollIntoView_( container, scrollTop, scrollTop + eleOffsetTop ); } initActions_() { this.registerAction( 'scrollToTarget', (invocation) => this.scrollToTarget(invocation?.caller) ); this.registerAction( 'setTarget', (invocation) => this.setTarget(invocation?.args?.containerId, invocation?.args?.targetId) ); } /** * @param {Element} element * @param {Element} container * @return {number} * @private */ getOffsetTop_(element, container) { if (!element./*OK*/ getClientRects().length) { return 0; } const rect = element./*OK*/ getBoundingClientRect(); if (rect.width || rect.height) { return rect.top - container./*OK*/ getBoundingClientRect().top; } return rect.top; } } SPZ.defineElement('spz-custom-anchor-scroll', SpzCustomAnchorScroll); const STRENGTHEN_TRUST_URL = "/api/strengthen_trust/settings"; class SpzCustomStrengthenTrust extends SPZ.BaseElement { constructor(element) { super(element); this.renderElement_ = null; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.xhr_ = SPZServices.xhrFor(this.win); const renderId = this.element.getAttribute('render-id'); SPZCore.Dom.waitForChild( document.body, () => !!document.getElementById(renderId), () => { this.renderElement_ = SPZCore.Dom.scopedQuerySelector( document.body, `#${renderId}` ); if (this.renderElement_) { this.render_(); } this.registerAction('track', (invocation) => { this.track_(invocation.args); }); } ); } render_() { this.fetchData_().then((data) => { if (!data) { return; } SPZ.whenApiDefined(this.renderElement_).then((apis) => { apis?.render(data); document.querySelector('#strengthen-trust-render-1539149753700').addEventListener('click',(event)=>{ if(event.target.nodeName == 'A'){ this.track_({type: 'trust_content_click'}); } }) }); }); } track_(data = {}) { const track = window.sa && window.sa.track; if (!track) { return; } track('trust_enhancement_event', data); } parseJSON_(string) { let result = {}; try { result = JSON.parse(string); } catch (e) {} return result; } fetchData_() { return this.xhr_ .fetchJson(STRENGTHEN_TRUST_URL) .then((responseData) => { if (!responseData || !responseData.data) { return null; } const data = responseData.data; const moduleSettings = (data.module_settings || []).reduce((result, moduleSetting) => { return result.concat(Object.assign(moduleSetting, { logos: (moduleSetting.logos || []).map((item) => { return moduleSetting.logos_type == 'custom' ? this.parseJSON_(item) : item; }) })); }, []); return Object.assign(data, { module_settings: moduleSettings, isEditor: window.self !== window.top, }); }); } } SPZ.defineElement('spz-custom-strengthen-trust', SpzCustomStrengthenTrust);

Description

  • ✔️Partial or full refund depend on the situation
  • ✔️Handling time>> Priority is given to delivery after payment.

📣BUY MORE SAVE MORE!

SHIPPING WORLDWIDE.

💯Payments Via PayPal® and CreditCard.


Normal price: $300

🔥Black Friday & Christmas Sale 70% Off ✋️Today's price: $99!

🔥 Neck & Shoulder Massager: Deep Relief for Tense Muscles 🧘
Ease neck and shoulder tension effortlessly with this lightweight neck & shoulder massager—your on-the-go relaxation companion! Weighing just 0.76kg, it sits comfortably on shoulders without strain, featuring an ergonomic design that mimics the gripping curve of human hands. Dual upper and lower massage heads with multi-dimensional curvature deliver thumb-like pressure, targeting dense trapezius muscles and neck contours precisely. Four rotating nodes provide powerful deep-kneading to loosen tight knots, while soothing heat (42°C-45°C) boosts blood flow and eases muscle stiffness. With two massage directions (clockwise/counter-clockwise) and two speed options, you can customize your relaxation—plus, hands-free straps let you use it while sitting, working, or lying down. Simple controls make it easy to operate, and it’s a practical gift for anyone needing relief. This massager turns “tense muscles” into “deep relaxation” in minutes!

Core Functions & Advantages

  • Lightweight & Ergonomic: Net weight only 0.76kg, ergonomic human-hand simulation design, fits neck and shoulders snugly without discomfort.
  • Precise Deep Kneading: 4 rotating nodes target neck, shoulders, and upper back muscles, effectively loosening tight knots.
  • Customizable Massage: 2 massage directions (clockwise/counter-clockwise) + 2 speed options, adapting to gentle relaxation or deep tissue relief needs.
  • Soothing Heat Therapy: 42°C-45°C constant warmth, promotes blood circulation, enhances muscle relaxation.
  • Hands-Free Convenience: Equipped with adjustable straps, usable while sitting, working, or lying down—no need to hold manually.
  • Easy Operation: Simple control buttons for heat, speed, and direction, no complicated setup.

Usage Scenarios

  • Office Work: Wear while sitting at the desk, relieving tension from long hours of typing or looking at screens.
  • Home Relaxation: Use while lying on the sofa or bed, unwinding after a busy day.
  • Daily Commute: Suitable for car rides (with safe use) or long trips, easing muscle stiffness from sitting.
  • Gift-Giving: Practical present for birthdays, festivals, or for family/friends with neck/shoulder strain (e.g., office workers, drivers, seniors).

Core Product Info

Key Parameter Details
Product Name Neck & Shoulder Massager
Current Price $149.00
Net Weight 0.76kg
Massage Nodes 4 rotating nodes
Heat Function 42°C-45°C soothing heat
Massage Settings 2 directions (clockwise/counter-clockwise) + 2 speed options
Design Features Hands-free straps, ergonomic human-hand simulation
Target Areas Neck, shoulders, upper back muscles
Warranty 12 months quality guarantee
SKU B0001

Notes

  • The massage intensity and heat temperature are pre-set for safety; avoid using on sensitive skin or injured areas.
  • Due to individual differences in muscle sensitivity, adjust the speed and direction according to personal comfort.

Neck & Shoulder Massager - Deep Relief & Relaxation

  • Targets Neck & Shoulders:Specifically designed to relieve tension in your neck, shoulders, and upper back muscles.
  • Deep Kneading Massage:Four rotating nodes provide a powerful, deep-kneading massage to loosen tight knots.
  • Soothing Heat: Gentle warmth helps relax muscles further and improve blood flow.
  • Two Massage Directions: Choose clockwise or counter-clockwise rotation for your comfort.
  • Two Speed Options:  Pick gentle relaxation or stronger deep tissue massage.
  • Hands-Free Use: Comfortable design with straps lets you relax while sitting, working, or lying down.
  • Easy to Use: Simple controls for heat, speed, and direction.
  • Great Gift Idea: Perfect practical gift for birthdays or anyone needing relaxation.
  • Warranty: 12 months quality guarantee.