Haunted Halloween Projector
 Haunted Halloween Projector
 Haunted Halloween Projector
 Haunted Halloween Projector
 Haunted Halloween Projector
 Haunted Halloween Projector
 Haunted Halloween Projector
 Haunted Halloween Projector
 Haunted Halloween Projector
 Haunted Halloween Projector
 Haunted Halloween Projector
 Haunted Halloween Projector
 Haunted Halloween Projector
 Haunted Halloween Projector
 Haunted Halloween Projector
 Haunted Halloween Projector
 Haunted Halloween Projector
 Haunted Halloween Projector
 Haunted Halloween Projector
 Haunted Halloween Projector

Haunted Halloween Projector

109 sold
$55.98
$85.00
-34%
Specification-US
Please select a specification
Quantity-Buy 1
Please select a quantity
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);

🎃Let Your Family Excited For Halloween! The Perfect Treat-or-tricking!🌈

The easy and perfect solution to decorate your home this Halloween!

Using a projector, you can project horrible scenes on any surface indoors and outdoors. Can make these scenes look realistic and creepy.

Lifelike: Bring horror into Halloween and make it a reality. The holographic projection has very realistic audio, which can be synchronized with the animation, bringing a more terrifying experience.

Simple Operation: Install the included projection screen securely inside the selected window. Point and freeze the animation on the screen, adjust the focus of the lens, and start playing.

Widely Used: One-button switch is easy to use, you can watch movies with just the push of a button, without complicated settings or installation

Weather Resistance and Safe Use: The product has a built-in temperature protection function, and the working temperature range is between -25°C and 60°C. The rated working time of LED floodlights exceeds several hours.

  • 🎃 Projects high-end optical projection screen videos to the included from within your home.
  • 🎃 Display stunning holiday movies in your window!
  • 🎃 with a tripod, easy to use and set up.
  • 🎃 Perfect for Christmas and Halloween decorations.

Easy To Set Up:

Product description:

  • Item Type: Projector Light
  • Color: Black
  • Quantity:1pc
  • Plug: EU plug US Plug UK Plug
  • Item Size: 22.5*21*6.5cm/8.8*8.3*2.6"(L*W*H)
  • Net Weight: 900g/31.8oz

Luxury Package:

  • 1 x Haunted Halloween Projector
  • 1 x Tripod
  • 1 x Charger
  • 1 x Package Box
  • 1 x white projection cloth
  • 2 x adhesive tape
  • 12 videos(6 videos Halloween/6 videos Christmas)

Notes

  • Due to manual measurements, please allow slight measurement deviations.
  • Due to the different display and lighting effects, the actual color of the item may be slightly different from the color displayed on the picture.

100% GUARANTEE: If you think the size is not suitable for you, or the quality is not good enough, please just contact us, and we will make a partial or full refund back to you depending on the situation.


OUR GUARANTEE

  • We truly believe we carry some of the most innovative products in the world, and we want to make sure we back that up with a risk-free ironclad 60 days guarantee.
  • If you don't have a positive experience for ANY reason, we will do WHATEVER it takes to make sure you are 100% satisfied with your purchase.
  • Buying items online can be a daunting task, so we want you to realize that there are absolutely ZERO risks in buying something and trying it out. If you don't like it, no hard feelings we'll make it right.
  • We have 24/7/365 Ticket and Email Support. Please contact us if you need assistance.