Hanging Retractable Cat Scratch Rope Mouse
Hanging Retractable Cat Scratch Rope Mouse
Hanging Retractable Cat Scratch Rope Mouse
Hanging Retractable Cat Scratch Rope Mouse
Hanging Retractable Cat Scratch Rope Mouse
Hanging Retractable Cat Scratch Rope Mouse
Hanging Retractable Cat Scratch Rope Mouse
Hanging Retractable Cat Scratch Rope Mouse
1 / 8
Hanging Retractable Cat Scratch Rope Mouse
Hanging Retractable Cat Scratch Rope Mouse
Hanging Retractable Cat Scratch Rope Mouse
Hanging Retractable Cat Scratch Rope Mouse
Hanging Retractable Cat Scratch Rope Mouse
Hanging Retractable Cat Scratch Rope Mouse
Hanging Retractable Cat Scratch Rope Mouse
Hanging Retractable Cat Scratch Rope Mouse
30% OFF

Hanging Retractable Cat Scratch Rope Mouse

$13.99 $20.00
0 sold
Option
Qty 999 in stock
/** @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);

Cats are crazy about chasing games!

A exciting cat toy, this cat feather toy is an irresistible lure for cats!

Swing this feathers " mouse" will get your cats excited and bring out the " hunt instinct"!

MAIN FEATURES

❤♥ Play with your cat all day, consume your cat’s energy and prevent it from destroying furniture

❤♥ Use this interactive cat toy to increase the cat’s playing time and avoid their depression.

❤♥ This cute bouncing mouse toy will keep your cat playing for hours! It is a kind of elastic rope, which can provide uninterrupted fun for your kitten, and can even accompany the cat to exercise.

❤♥ It can also help you train the cat’s intelligence, improve the hunting ability, and develop the relationship between the owner and the cat. Suitable for cats of all ages.

SPECIFICATIONS

Material: Plush

Size: The total length can reach 1.6m

Package Includes: 1 x Hanging Retractable Cat Scratch Rope Mouse

NOTE

Due to manual measurements, please allow slight measurement deviations.

Due to the different display and lighting effects, the actual color of the item may be slightly different from the color displayed on the picture.

You may also like Don't Like These?