Cash on Delivery to Japan,Taiwan HongKong and Singapore ,Free shipping over USD$59
2-in-1 Glass Oil Sprayer and Dispenser
2-in-1 Glass Oil Sprayer and Dispenser
2-in-1 Glass Oil Sprayer and Dispenser
2-in-1 Glass Oil Sprayer and Dispenser
2-in-1 Glass Oil Sprayer and Dispenser
2-in-1 Glass Oil Sprayer and Dispenser
2-in-1 Glass Oil Sprayer and Dispenser
2-in-1 Glass Oil Sprayer and Dispenser
2-in-1 Glass Oil Sprayer and Dispenser
2-in-1 Glass Oil Sprayer and Dispenser
2-in-1 Glass Oil Sprayer and Dispenser
2-in-1 Glass Oil Sprayer and Dispenser
2-in-1 Glass Oil Sprayer and Dispenser
12 / 13
2-in-1 Glass Oil Sprayer and Dispenser
2-in-1 Glass Oil Sprayer and Dispenser
2-in-1 Glass Oil Sprayer and Dispenser
2-in-1 Glass Oil Sprayer and Dispenser
2-in-1 Glass Oil Sprayer and Dispenser
2-in-1 Glass Oil Sprayer and Dispenser
2-in-1 Glass Oil Sprayer and Dispenser
2-in-1 Glass Oil Sprayer and Dispenser
2-in-1 Glass Oil Sprayer and Dispenser
2-in-1 Glass Oil Sprayer and Dispenser
2-in-1 Glass Oil Sprayer and Dispenser
2-in-1 Glass Oil Sprayer and Dispenser
2-in-1 Glass Oil Sprayer and Dispenser
You May Also Like Don't Like These?
mysite

2-in-1 Glass Oil Sprayer and Dispenser

$19.99 $39.99
0 sold
Color
Quantity
Qty 992 in stock

Experience the convenience of our ingenious 2-in-1 kitchen tool - a space-saving oil dispenser that combines squirting and pouring, making cooking a breeze! 💞

undefined

FEATURES

  • 🌟Versatile Kitchen Tool: Our 2-in-1 oil dispenser and sprayer combines the features of an oil dispenser and vinegar sprayer to meet all your cooking needs. The wide bottle mouth design eliminates the need for a funnel, ensuring ease of use.
  • Safe and Durable Material: Made of high-quality, BPA-free glass that is odorless and ensures safe and healthy food preparation. The thickened glass ensures durability and is ideal for both indoor and outdoor use.

    undefined

    • 💕Multifunctional Use: This tool is not only a simple oil dispenser, but is also perfect for dispensing cooking oil, vinegar, soy sauce and other essential kitchen liquids. It is suitable for various applications, such as grilling, preparing salads, baking, watering houseplants and even cleaning.

    • 🌷Efficient Oil Control: A simple thumb press on the pump produces 0.2ml of spray per time, allowing you to cover your food and pot evenly, efficiently controlling the amount of oil used during cooking.

      SPECIFICATIONS

      • Material: polypropylene, glass, stainless steel

      • Capacity: 470 ml

      • Color: Green, Yellow, Beige

      • Size:

        PACKAGE

        • 1 x 2-in-1 Glass Oil Sprayer and Dispenser

        NOTE

        • Please allow slight measurement deviations due to manual measurement.

        • Due to the different monitor and light effect, the actual color of the item might be slightly different from the color showed in the pictures.

          You May Also Like Don't Like These?
          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);