All-Purpose Rinse- Cleaning Spray
All-Purpose Rinse- Cleaning Spray
All-Purpose Rinse- Cleaning Spray
All-Purpose Rinse- Cleaning Spray
All-Purpose Rinse- Cleaning Spray
All-Purpose Rinse- Cleaning Spray
All-Purpose Rinse- Cleaning Spray
All-Purpose Rinse- Cleaning Spray
All-Purpose Rinse- Cleaning Spray
1/9
All-Purpose Rinse- Cleaning Spray
All-Purpose Rinse- Cleaning Spray
All-Purpose Rinse- Cleaning Spray
All-Purpose Rinse- Cleaning Spray
All-Purpose Rinse- Cleaning Spray
All-Purpose Rinse- Cleaning Spray
All-Purpose Rinse- Cleaning Spray
All-Purpose Rinse- Cleaning Spray
All-Purpose Rinse- Cleaning Spray
1/9

All-Purpose Rinse- Cleaning Spray

$15.99
$29.99
Save 47%
BUY MORE SAVE MORE
Please select a buy more save more
STYLE
Please select a style
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);

All-purpose Bubble Spray is an innovative product designed exclusively for heavy-duty cleaning, with eco-friendly and nontoxic ingredients that are guaranteed not to harm your animals or skin.

Fast-fizzing technology creates surfactant suds that help loosen stubborn dirt and grime for an easy cleaning experience.

STOP! If you have a headache in the bathroom use our All-purpose bathroom Bubble Cleaner.

CLEANING WAS NEVER SO SIMPLE AND FAST

With the new foam technology, this spray penetrates and removes the toughest stains from all bathroom items in two steps.

It eliminates grease, stuck-on dirt, dust, fingerprints, and any unwanted stain on all surfaces, leaving a non-greasy, matte finish that prevents fading.

Widely Applicable works on all surfaces including fabric, canvas, finished leather, PVC, glass, vinyl, plastic, rubber, metals, wood, gel coat, fiberglass, and more!

undefined

FEATURES:

  • 100% Non-toxic & grease-free

Removes stuck-on dirt and leaves a non-greasy, dry & matte finish with no odor that lasts for ~3 months. 100% free of grease-producing silicone oils and petroleum distillates.

  • Aroma

Foam cleaner provides a fresh scent while eliminating 100% soap scum.

HOW TO USE:

  • 1. Spray the product on the surface of the object to be cleaned.
  • 2. Wipe the surface with a towel or sponge.
  • 3. Rinse the surface with clean water.
  • 4. Clean the towel or sponge in time after use.

💐WHY US

We work directly with manufacturers all over the world to ensure the best quality of our products. We have a Quality Control department which helps us to keep our promise!
  • 🔥Price is always competitive.
  • 😊Awesome Customer Service.
  • 🏆Amazing products along with High Quality.
  • 🍭Read reviews from our lovely customers.