Dushangart™ Hand Massager with Heat Compression Therapy

$99.00
$200.00
const TAG = "spz-custom-product-automatic"; class SpzCustomProductAutomatic extends SPZ.BaseElement { constructor(element) { super(element); this.variant_id = 'd1ac6b59-f6c5-4207-9eba-fe01debaaee3'; 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 = 'a0920df4-8fd2-46dd-8bbe-4c9c7ec67d44'; 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 == 'a0920df4-8fd2-46dd-8bbe-4c9c7ec67d44' && 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: $200

Today's price: $99!

Product Description

(Integrating "precision targeting", "safe warmth", "portable convenience" and after-sales guarantees from the neck & shoulder massager, focusing on solving hand soreness pain points for office workers, phone users, and arthritis sufferers)

1. Core Highlights: Say Goodbye to Hand Soreness, Enjoy Spa-Quality Relief at Home

🤲 Tired of stiff fingers from long hours typing, achy palms from scrolling phones, or joint discomfort from arthritis? The Dushangart™  Hand Massager turns these troubles into "instant relaxation"—it combines 13 smart airbags for targeted compression, 4-level precise heating, and 3 customized modes, just like a professional hand masseuse. Lightweight, low-noise, and with fast USB-C charging, it fits perfectly in your office, home, or even travel bag—relieve hand fatigue anytime, anywhere!

2. Core Functions: Professional Therapy, Customized for You

① 13 Smart TPU Airbags: Targeted Compression for Fingers, Palms & Wrists

Unlike ordinary hand massagers that only press palms, this device uses 13 flexible TPU airbags to wrap around your entire hand—from fingertips to wrists. The airbags inflate/deflate in a rhythmic way, simulating human-hand kneading, squeezing, and pressing. It precisely targets stiff muscles in the palms, tense finger joints, and sore wrists, effectively improving blood circulation and easing "typing-induced stiffness" or "phone-related fatigue".

② 4-Level Precise Heating: 10-Second Quick Warmth, Safe & Comfortable

With 4 adjustable heat settings (99°F/37°C gentle warm, 104°F/40°C soothing, 108°F/42°C relieving, 113°F/45°C deep comfort), it meets different needs—choose lower heat for daily relaxation, higher heat for arthritis or cold-weather hand stiffness. It heats up in just 10 seconds (no waiting around!) and maintains constant temperature, avoiding "too cold to work" or "too hot to burn skin" issues. The warmth penetrates deep into joints and muscles, enhancing the massage effect.

③ 3 Modes + 5 Intensities: Customize Your Relaxation

  • Vitality Mode: Gentle compression + mild heat—ideal for morning wake-up or post-short typing sessions to "activate" hands.
  • Health Mode: Moderate pressure + medium heat—perfect for midday breaks, relieving 2-3 hours of hand strain from work/phone use.
  • Soothing Mode: Deep compression + optional high heat—great for nighttime relaxation or arthritis sufferers, easing daily joint discomfort.
    5 compression intensities let you adjust pressure (from soft to firm) based on sensitivity—seniors, office workers, and athletes can all find their perfect fit.

④ Safe & Portable Design: Use with Confidence Anywhere

  • Safety First: 15-minute auto-shutoff function (prevents overuse), low-noise operation (≤40dB)—use it while working, watching TV, or even in meetings without distraction.
  • Portable & Convenient: Compact size (fits most hand sizes), USB-C fast charging (cable included; charger block not required—use your phone charger!). It’s lightweight enough to toss in a laptop bag, so you can enjoy a massage during work breaks or business trips.

3. Usage Scenarios: Perfect for All Hand-Care Needs

Scenario Target Crowd & Usage Description
🖥️ Office Work Breaks For typists, designers, or desk workers—use "Vitality Mode" + 99°F heat during 10-minute breaks to relieve finger stiffness from keyboard/mouse use.
📱 Post-Phone Scrolling For "phone addicts"—after hours of scrolling social media, use "Health Mode" + 104°F heat to soothe achy palms and tense finger joints.
👵 Arthritis Care For seniors with hand arthritis—use "Soothing Mode" + 113°F heat daily to reduce joint stiffness (especially in cold weather) and improve hand flexibility.
✈️ Travel & Commutes For business travelers—pack it in your carry-on, charge via power bank, and use it on planes/trains to ease hand fatigue from holding luggage or devices.
🎁 Thoughtful Gifting Practical and caring—ideal for parents (hand care), colleagues (office relief), or friends with arthritis. Solves the "what to gift" dilemma perfectly.

4. Product Specification Table: Transparent Details for Informed Choices

Parameter Category Specifications Notes
Product Name Dushangart™  Hand Massager With heat & compression therapy
SKU A0011994 Confirm model to avoid wrong purchase
Price $99.00 (Original Price: $200.00) Save $14—great value for professional therapy
Core Technology 13 TPU smart airbags (compression) + heating function Targets fingers, palms, wrists
Massage Modes 3 modes (Vitality / Health / Soothing) Adapt to different relaxation needs
Heat Settings 4 levels (99°F / 104°F / 108°F / 113°F) Quick 10-second heat-up, constant temperature
Compression Intensities 5 levels (soft to firm) Customizable for sensitivity
Safety Features 15-minute auto-shutoff, low-noise (≤40dB) Prevents overuse and distraction
Charging & Portability USB-C charging (cable included; charger block not included) Lightweight, fits laptop bags
Target Areas Fingers, palms, wrists Relieves full-hand soreness