🎁Free Shipping on Orders Over $59🎉
Skunks Outdoor Ultrasonic Repeller - Solar Powered
Skunks Outdoor Ultrasonic Repeller - Solar Powered
Skunks Outdoor Ultrasonic Repeller - Solar Powered
Skunks Outdoor Ultrasonic Repeller - Solar Powered
Skunks Outdoor Ultrasonic Repeller - Solar Powered
Skunks Outdoor Ultrasonic Repeller - Solar Powered
Skunks Outdoor Ultrasonic Repeller - Solar Powered
Skunks Outdoor Ultrasonic Repeller - Solar Powered
Skunks Outdoor Ultrasonic Repeller - Solar Powered
Skunks Outdoor Ultrasonic Repeller - Solar Powered
Skunks Outdoor Ultrasonic Repeller - Solar Powered
Skunks Outdoor Ultrasonic Repeller - Solar Powered
Skunks Outdoor Ultrasonic Repeller - Solar Powered
Skunks Outdoor Ultrasonic Repeller - Solar Powered
1 / 14
Skunks Outdoor Ultrasonic Repeller - Solar Powered
Skunks Outdoor Ultrasonic Repeller - Solar Powered
Skunks Outdoor Ultrasonic Repeller - Solar Powered
Skunks Outdoor Ultrasonic Repeller - Solar Powered
Skunks Outdoor Ultrasonic Repeller - Solar Powered
Skunks Outdoor Ultrasonic Repeller - Solar Powered
Skunks Outdoor Ultrasonic Repeller - Solar Powered
Skunks Outdoor Ultrasonic Repeller - Solar Powered
Skunks Outdoor Ultrasonic Repeller - Solar Powered
Skunks Outdoor Ultrasonic Repeller - Solar Powered
Skunks Outdoor Ultrasonic Repeller - Solar Powered
Skunks Outdoor Ultrasonic Repeller - Solar Powered
Skunks Outdoor Ultrasonic Repeller - Solar Powered
Skunks Outdoor Ultrasonic Repeller - Solar Powered
36% OFF
Fnkus

Skunks Outdoor Ultrasonic Repeller - Solar Powered

$31.97 $49.99
0 sold
Type
Qty 998 in stock

  • SAY GOODBYE TO UNWELCOMED SKUNKS! With the help of Pest Destruct - Ultrasonic Skunk Pest Repeller you can get rid of skunks within 72 hours. Coverage Area: 30 feet to 2425 square feet.
  • ENVIRONMENTAL FRIENDLY AND EASY TO USE: Naturally drives skunks and other animals out without killing them. Made of anti-UV and waterproof material, suitable for all weather conditions. SOLAR energy technology, charge itself under sun, wireless and rechargeable. Don't worry about getting new batteries anymore! Repeller features FLASHING light to scare the animals. 
  • CHEMICAL FREE! Protect your home from unwanted skunks without the use of dangerous and messy chemicals, pesticides, sprays, or traps that can harm you, and your family. No Dead animals!
  • NEW EFFECTIVE TECHNOLOGY! The Pest Destruct - Ultrasonic Skunk Repeller uses improved electromagnetic technology to protect you from unwanted animals and pests. It emits a range of powerful, deep-penetrating ultrasonic sounds to scare away a wide variety of pests and animals. Equipped with an infrared motion sensor, the repeller is activated as soon as an animal is detected
  • QUALITY GUARANTEE! Our goal is your 100% satisfaction. This is why we provide a quality guarantee on the Pest Destruct - Ultrasonic Skunk and Pest Repeller. Contact us if you’re unhappy with your purchase. We’ll be glad to help.
  • Product Size: 5.6" x 5" x 3.75"
    Spike: 12.6"
    Package Size: 6.06" x 5.70" x 3.95"
    Weight: 0.68 Lbs.

const TAG = 'spz-custom-painter-button-animation'; const MAX_ITERATION_COUNT = 99999999; const SITE = (window.C_SETTINGS && window.C_SETTINGS.routes && window.C_SETTINGS.routes.root) || ''; const ADD_TO_CART_ANIMATION_SETTING = `${SITE}/api/marketing_atmosphere_app/add_to_cart_btn_animation/setting`; class SpzCustomPainterButtonAnimation extends SPZ.BaseElement { /**@override */ static deferredMount() { return false; } /** @param {!SpzElement} element */ constructor(element) { super(element); /** @private {!../../src/service/xhr-impl.Xhr} */ this.xhr_ = SPZServices.xhrFor(this.win); /** @private {Object} */ this.data_ = null; /** @private {Element} */ this.addToCartButton_ = null; /** @private {boolean} */ this.productAvailable_ = true; /** @private {number} */ this.timerId_ = null; /** @private {number} */ this.animationExecutionCount_ = 0; /** @private {boolean} */ this.selectedVariantAvailable_ = true; /** @private {number} */ this.delay_ = 5000; /** @private {number} */ this.iterationCount_ = 5; /** @private {string} */ this.animationClass_ = ''; } /** @override */ isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } /** @override */ buildCallback() { this.productAvailable_ = this.element.hasAttribute('product-available'); this.selectedVariantAvailable_ = this.element.hasAttribute('selected-variant-available'); } /** @override */ mountCallback() { this.render_(); } /** @private */ render_() { if (!this.productAvailable_) { return; } this.fetch_().then((data) => { if (!data) { return; } this.data_ = data; this.animationClass_ = `painter-${data.animation_name}-animation`; this.iterationCount_ = data.animation_iteration_count === 'infinite' ? MAX_ITERATION_COUNT : data.animation_iteration_count; const animationDuration = 1; const animationDelay = data.animation_delay || 5; this.delay_ = (animationDuration + animationDelay) * 1000; this.handleButtonEffect_(); }); } /** * @param {JsonObject} data * @return {(null|Object)} * @private */ parseJson_(data) { try { return JSON.parse(data); } catch (e) { return null; } } /** * @return {Promise} * @private */ fetch_() { return this.xhr_.fetchJson(ADD_TO_CART_ANIMATION_SETTING).then((data) => { if (!data || !data.enabled) { return null; } return this.parseJson_(data.detail); }); } /** @private */ getAddToCartButton_() { this.addToCartButton_ = SPZCore.Dom.scopedQuerySelector( document.body, '[data-section-type="product"] [role="addToCart"], [data-section-type="product_detail"] [role="addToCart"], [data-section-type="product_detail"] [data-click="addToCart"], [data-section-type="product"] [data-click="addToCart"]' ); } /** @private */ restartAnimation_() { this.addToCartButton_.classList.remove(this.animationClass_); this.addToCartButton_./* OK */ offsetWidth; this.addToCartButton_.classList.add(this.animationClass_); this.animationExecutionCount_++; } /** @private */ clearTimer_() { this.win.clearInterval(this.timerId_); this.timerId_ = null; } /** @private */ setupTimer_() { this.timerId_ = this.win.setInterval(() => { this.restartAnimation_(); if (this.animationExecutionCount_ >= this.iterationCount_) { this.removeAnimationClass_(); this.clearTimer_(); } }, this.delay_); } /** @private */ restartTimer_() { if (this.animationExecutionCount_ >= this.iterationCount_) { this.removeAnimationClass_(); return; } this.setupTimer_(); } /** @private */ listenVariantChange_() { SPZUtils.Event.listen(self.document, 'dj.variantChange', (e) => { const selectedVariant = e.detail && e.detail.selected; if (!selectedVariant) { return; } const {available} = selectedVariant; if (this.selectedVariantAvailable_ !== available) { this.selectedVariantAvailable_ = available; this.clearTimer_(); if (available) { this.restartTimer_(); } } }); } /** @private */ removeAnimationClass_() { this.win.setTimeout(() => { this.addToCartButton_.classList.remove(this.animationClass_); }, 1000); } /** @private */ handleButtonEffect_() { this.getAddToCartButton_(); if (!this.addToCartButton_) { return; } if (this.selectedVariantAvailable_) { ++this.animationExecutionCount_; this.addToCartButton_.classList.add(this.animationClass_); if (this.iterationCount_ === 1) { this.removeAnimationClass_(); return; } this.setupTimer_(); } this.listenVariantChange_(); } } SPZ.defineElement(TAG, SpzCustomPainterButtonAnimation);