Halloween Mask Horror Hockey Mask Halloween Masquerade Party Cosplay Prop Costume Mask
Halloween Mask Horror Hockey Mask Halloween Masquerade Party Cosplay Prop Costume Mask
Halloween Mask Horror Hockey Mask Halloween Masquerade Party Cosplay Prop Costume Mask
Halloween Mask Horror Hockey Mask Halloween Masquerade Party Cosplay Prop Costume Mask
Halloween Mask Horror Hockey Mask Halloween Masquerade Party Cosplay Prop Costume Mask
Halloween Mask Horror Hockey Mask Halloween Masquerade Party Cosplay Prop Costume Mask
Halloween Mask Horror Hockey Mask Halloween Masquerade Party Cosplay Prop Costume Mask
Halloween Mask Horror Hockey Mask Halloween Masquerade Party Cosplay Prop Costume Mask
Halloween Mask Horror Hockey Mask Halloween Masquerade Party Cosplay Prop Costume Mask
Halloween Mask Horror Hockey Mask Halloween Masquerade Party Cosplay Prop Costume Mask
Halloween Mask Horror Hockey Mask Halloween Masquerade Party Cosplay Prop Costume Mask
Halloween Mask Horror Hockey Mask Halloween Masquerade Party Cosplay Prop Costume Mask
Halloween Mask Horror Hockey Mask Halloween Masquerade Party Cosplay Prop Costume Mask
Halloween Mask Horror Hockey Mask Halloween Masquerade Party Cosplay Prop Costume Mask
Halloween Mask Horror Hockey Mask Halloween Masquerade Party Cosplay Prop Costume Mask
Halloween Mask Horror Hockey Mask Halloween Masquerade Party Cosplay Prop Costume Mask
Halloween Mask Horror Hockey Mask Halloween Masquerade Party Cosplay Prop Costume Mask
Halloween Mask Horror Hockey Mask Halloween Masquerade Party Cosplay Prop Costume Mask
Halloween Mask Horror Hockey Mask Halloween Masquerade Party Cosplay Prop Costume Mask
Halloween Mask Horror Hockey Mask Halloween Masquerade Party Cosplay Prop Costume Mask

Halloween Mask Horror Hockey Mask Halloween Masquerade Party Cosplay Prop Costume Mask

$14.99
$0.00
-$-14.99
Color-Black
Please select a color
Quantity
Free worldwide shipping
Free returns
Sustainably made
Secure payments
Vendor by: Halloween mask
SKU:

  • Comfortable and Breathable: This hocky mask have several breathable holes near nose area and a wide field of view around eyes, so it has high wearing comfort.
  • One Size Fits All: Elastic straps with adjustment keep the mask in position.One size fits all.The quality is better than the low price product on the market.Please rest assured to buy the mask.
  • Widely Applications: Perfect for Halloween, Christmas, Easter, Carnival, Mardi Gras, Theme parties, Costume Parties, Halloween costumes, Rave Festivals, night club, Party cosplay,collection ect.
  • Buy with Confidence: We offer 1OO% money back guarantee if you are not completely satisfied with your purchase, our friendly customer service team are always waiting for helping you at any time.
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.