Handgreep
loader
Bezig met laden...

Handgrepen zijn relatief kleine onderdelen in de badkamer, maar hebben een grote impact op de afwerking en uitstraling van de ruimte. Zo zijn er handgrepen voor badkamermeubels, baden en douches. Een badgreep is bijvoorbeeld erg handig bij het in- en uitstappen van het bad. De handgrepen zijn er in verschillende materialen en designs. Bekijk nu in ons brede assortiment welke handgreep het beste bij jouw badkamerstijl past.

119 producten
Geberit iCon Meubelgreep B75 Lava
Adviesprijs 39,00
Prijs 33,11
truck Morgen bezorgd
Hansgrohe AddStoris handgreep brushed bronze
Adviesprijs 163,00
Prijs 150,93
truck Morgen gratis bezorgd
Saqu Olivo Greep 40x22x1,8 cm Geborsteld Metal Black
Adviesprijs 24,00
Prijs 16,99
check-circle Op voorraad
Saqu Olivo Greep 20x4x0,8 cm Geborsteld Metal Black
Adviesprijs 17,00
Prijs 11,99
check-circle Op voorraad
  • check-circle 7 dagen per week bereikbaar
  • check-circle 6e jaar op rij beste webwinkel
  • check-circle Binnen 30 dagen retourneren
Niet gevonden wat je zocht?
119 producten
window.runChatLogic = function() { if (!window.marketingToolsLoaded || window.cmChatCombinedIntegration) return; window.cmChatCombinedIntegration = true; const WEBCONVERSATIONS_ID = '2059de50-3b41-4c7c-9eb9-62b6f21cdf58'; //variabel per domain const SCRIPT_ID = 'cmwc-webchat-script'; let lastProcessedContext = ''; const getVisitorId = () => { const match = document.cookie.match(/_ga=GA1\.\d+\.(\d+\.\d+)/); return match ? String(match[1]) : (sessionStorage.getItem('vertex_fallback_id') || 'anon-' + Math.random().toString(36).substring(2, 15)); }; const getSessionId = () => { try { const gaCookie = document.cookie.split('; ').find(row => row.startsWith('_ga_')); if (gaCookie) return String(gaCookie.split('=')[1].split('.')[2]); } catch (e) { } return null; }; const findInDataLayer = (key, value) => { if (!window.dataLayer) return null; return [...window.dataLayer].reverse().find(e => e && e[key] === value); }; const getProductAndCartContext = () => { const payload = {}; const viewItemEvent = findInDataLayer('event', 'view_item'); if (viewItemEvent?.ecommerce?.items?.length) { const product = viewItemEvent.ecommerce.items[0]; payload.last_product = product.item_name ? product.item_name.toString() : ''; payload.last_product_id = product.item_id ? product.item_id.toString() : ''; } const cartEvent = findInDataLayer('event', 'cartPage'); if (cartEvent && cartEvent.cart) { const cart = cartEvent.cart; payload.cart_items_json = JSON.stringify(cart.items); payload.cart_content_summary = cart.items.map(item => `${item.quantity}x ${item.name}`).join(', '); payload.cart_total = cart.total ? cart.total.toString() : '0'; payload.cart_qty = cart.cartQty ? cart.cartQty.toString() : '0'; payload.cart_has_items = cart.hasItems ? cart.hasItems.toString() : 'false'; } return payload; }; const getContextPayload = () => { const host = window.location.hostname; const payload = { ga_visitor_id: getVisitorId(), ga_session_id: getSessionId(), domain: host.includes('saniweb.de') ? 'saniweb.de' : (host.includes('saniweb.be') ? 'saniweb.be' : 'saniweb.nl'), store_id: host.includes('saniweb.be') ? '1' : (host.includes('saniweb.de') ? '2' : '0') }; // Cart ID toevoegen indien aanwezig try { const mageCache = JSON.parse(localStorage.getItem('mage-cache-storage') || '{}'); if (mageCache.cart?.cartId) payload.cart_id = String(mageCache.cart.cartId); } catch (e) {} Object.assign(payload, getProductAndCartContext()); return payload; }; const sendContextUpdate = () => { try { const chatInstance = window.cmwc && window.cmwc.get(WEBCONVERSATIONS_ID); if (!chatInstance) return; const currentPayload = getContextPayload(); const signature = JSON.stringify(currentPayload); if (signature !== lastProcessedContext) { lastProcessedContext = signature; chatInstance.addContext(currentPayload); console.log("[Chat-Safe] Context updated"); } } catch (e) { console.error("[Chat-Safe] Error sending context:", e); } }; const loadChatWidget = () => { if (document.getElementById(SCRIPT_ID)) return; const chatLanguage = window.location.hostname.includes('saniweb.de') ? 'de' : 'nl'; const script = document.createElement('script'); script.id = SCRIPT_ID; script.type = 'module'; script.crossOrigin = 'anonymous'; script.src = 'https://webchat.digitalcx.com/webchat.js'; script.onload = () => { try { const instance = cmwc.add(WEBCONVERSATIONS_ID); instance.install({ language: chatLanguage }); // Wacht heel even tot de installatie echt klaar is voor de eerste context setTimeout(sendContextUpdate, 1000); } catch (e) { console.error("[Chat-Safe] Install error:", e); } }; document.body.appendChild(script); }; // Start de boel loadChatWidget(); // In plaats van een snelle poller: check elke 10 seconden OF bij een pagina-event setInterval(sendContextUpdate, 10000); window.addEventListener('focus', sendContextUpdate); // Update als gebruiker terugkomt op tabblad document.addEventListener('turbo:load', () => setTimeout(sendContextUpdate, 300)); }; function syncCartToFrontend(cartId) { localStorage.setItem('cartId', cartId); if (window.hyva && window.hyva.setCookie) { window.hyva.setCookie('mage-cache-sessid', '', -1, true); } else { document.cookie = 'mage-cache-sessid=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT'; } window.dispatchEvent(new CustomEvent('reload-customer-section-data')); } // --- TRIGGERS --- if (window.marketingToolsLoaded) { window.runChatLogic(); } window.addEventListener('CookiebotOnAccept', function() { window.marketingToolsLoaded = true; // Zorg dat de flag omgaat window.runChatLogic(); }); // Turbo Load support document.addEventListener('turbo:load', () => { window.cmChatCombinedIntegration = false; if (window.marketingToolsLoaded) window.runChatLogic(); });