2 Pcs Adhesive Shower Curtain Rod Holder, Wall Mount Retainer of Shower Rod for Bathroom, ( Shower Curtain Rod Not Included )
2 Pcs Adhesive Shower Curtain Rod Holder, Wall Mount Retainer of Shower Rod for Bathroom, ( Shower Curtain Rod Not Included )
2 Pcs Adhesive Shower Curtain Rod Holder, Wall Mount Retainer of Shower Rod for Bathroom, ( Shower Curtain Rod Not Included )
2 Pcs Adhesive Shower Curtain Rod Holder, Wall Mount Retainer of Shower Rod for Bathroom, ( Shower Curtain Rod Not Included )
2 Pcs Adhesive Shower Curtain Rod Holder, Wall Mount Retainer of Shower Rod for Bathroom, ( Shower Curtain Rod Not Included )
2 Pcs Adhesive Shower Curtain Rod Holder, Wall Mount Retainer of Shower Rod for Bathroom, ( Shower Curtain Rod Not Included )

2 Pcs Adhesive Shower Curtain Rod Holder, Wall Mount Retainer of Shower Rod for Bathroom, ( Shower Curtain Rod Not Included )

Quantity
$9.99
$0.00
-$-9.99
Free worldwide shipping
Free returns
Sustainably made
Secure payments
Shipping
Features:
【PROTECT YOUR FAMILY】We design this shower curtain rod holder to avoid some potential and unwanted falling-offs, make sure the perfect safety when your family members are taking the shower(Shower curtain rod is not included)
【MULTIPLY INSTALLATION】Suit for all kinds of bathroom walls. If your wall is uneven or rough, please install the mount onto the wall with SCREWS; if your wall is even & smooth walls, please install the mount onto the wall with 3M TIGHT STICKERS.
【PRACTICAL DESIGN】Suitable for most shower curtain rod in market, 4 inch diameter 3M sticker can hold up to 20 pounds. High quality acrylic material can keep your shower rod from scratch or bumper.
【ELEGANT DECORATION】Elegant and sleek appearance, fits most bathroom style. Simple and elegant design beautifies your bathroom.

Specification:
Color: white
Quantity: 2
Package:
2 pcs * Non-slip Hooks
1 set* Screws
  • 【PROTECT YOUR FAMILY】We design this shower curtain rod holder to avoid some potential and unwanted falling-offs, make sure the perfect safety when your family members are taking the shower
  • 【MULTIPLY INSTALLATION】Suit for all kinds of bathroom walls. If your wall is uneven or rough, please install the mount onto the wall with SCREWS; if your wall is even ; smooth walls, please install the mount onto the wall with 3M TIGHT STICKERS
  • 【PRACTICAL DESIGN】Suitable for most shower curtain rod in market, 4 inch diameter 3M sticker can hold up to 20 pounds. High quality acrylic material can keep your shower rod from scratch or bumper
  • 【ELEGANT DECORATION】Elegant and sleek appearance, fits most bathroom style. Simple and elegant design beautifies your bathroom
  • 【WARRANTY】If at any time you’re not 100% satisfied, We will offer a full refund on your purchase!
Customer Reviews

Here are what our customers say.

Write a Review
Customer Reviews
Wow you reached the bottom
Newest
Most liked
Highest ratings
Lowest ratings
×
class SpzCustomFileUpload extends SPZ.BaseElement { constructor(element) { super(element); this.uploadCount_ = 0; this.fileList_ = []; } buildCallback() { this.action = SPZServices.actionServiceForDoc(this.element); this.registerAction('upload', (data) => { this.handleFileUpload_(data.event?.detail?.data || []); }); this.registerAction('delete', (data) => { this.handleFileDelete_(data?.args?.data); }); this.registerAction('preview', (data) => { this.handleFilePreview_(data?.args?.data); }); this.registerAction('limit', (data) => { this.handleFileLimit_(); }); this.registerAction('sizeLimit', (data) => { this.handleFileSizeLimit_(); }); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } setData_(count, file) { this.uploadCount_ = count; this.fileList_ = file; } handleFileUpload_(data) { data.forEach(i => { if(this.fileList_.some(j => j.url === i.url)) return; this.fileList_.push(i); }) this.uploadCount_++; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileUpload", { count: this.uploadCount_, files: this.fileList_}); if(this.fileList_.length >= 5){ document.querySelector('#review_upload').style.display = 'none'; } if(this.fileList_.length > 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '8px'; } } handleFileDelete_(index) { this.fileList_.splice(index, 1); this.uploadCount_--; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileDelete", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; if(this.fileList_?.length === 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '132px'; } } handleFilePreview_(index) { const finalPreviewData = this.fileList_[index]; const filePreviewModal = document.getElementById('filePreviewModal'); const fullScreenVideo = document.getElementById('fullScreenVideo'); const fullScreenImage = document.getElementById('fullScreenImage'); const previewModalClose = document.getElementById('previewModalClose'); const previewLoading = document.getElementById('previewLoading'); filePreviewModal.style.display = 'block'; previewLoading.style.display = 'flex'; if(finalPreviewData?.type === 'video'){ const media = this.mediaParse_(this.fileList_[index]?.url); fullScreenVideo.addEventListener('canplaythrough', function() { previewLoading.style.display = 'none'; }); fullScreenImage.src = ''; fullScreenImage.style.display = 'none'; fullScreenVideo.style.display = 'block'; fullScreenVideo.src = media.mp4 || ''; } else { fullScreenImage.onload = function() { previewLoading.style.display = 'none'; }; fullScreenVideo.src = ''; fullScreenVideo.style.display = 'none'; fullScreenImage.style.display = 'block'; fullScreenImage.src = finalPreviewData.url; } previewModalClose.addEventListener('click', function() { filePreviewModal.style.display = 'none'; }); } handleFileLimit_() { alert(window.AppReviewsLocale.comment_file_limit || 'please do not upload files more than 5'); this.triggerEvent_("handleFileLimit"); } handleFileSizeLimit_() { alert(window.AppReviewsLocale.comment_file_size_limit || 'File size does not exceed 10M'); } clear(){ this.fileList_ = []; this.uploadCount_ = 0; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleClear", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; } mediaParse_(url) { var result = {}; try { url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (str, key, value) { try { result[key] = decodeURIComponent(value); } catch (e) { result[key] = value; } }); result.preview_image = url.split('?')[0]; } catch (e) {}; return result; } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, name, data); this.action.trigger(this.element, name, event); } } SPZ.defineElement('spz-custom-file-upload', SpzCustomFileUpload);
The review would not show in product details on storefront since it does not support to.