The Nightmare Before Christmas

The audience has spoken. See what they’re saying.
1374
Starring
Danny Elfman, Chris Sarandon, Catherine O'Hara
Direction
Henry Selick
Rating
PG
Genre
Animation, Christmas, Family, Fantasy, Musical
Release date
Oct 29, 1993
Where to watch
Prime Video

The Nightmare Before Christmas follows Jack Skellington, the Pumpkin King of Halloween Town, who becomes bored with his usual Halloween routine. After discovering Christmas Town, Jack is captivated by the holiday’s festive spirit and decides to take over Christmas. He kidnaps Santa Claus and tries to put his own spooky spin on the celebration, but his well-meaning plan goes awry when his creepy gifts terrify children.

X Marks the Spot - Follow us Today!!

James Carrick

James Carrick is a passionate film enthusiast with a degree in theater and philosophy. James approaches dramatic criticism from a philosophic foundation grounded in aesthetics and ethics, offering insight and analysis that reveals layers of cinematic narrative with a touch of irreverence and a dash of snark.

Leave a Review

No comments yet.

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

No audience reviews yet. Be the first to leave one.

 

X Marks the Spot - Follow us Today!!

 

 

'; win.document.open(); win.document.write(html); win.document.close(); return true; } function escapeHtml(str){ return String(str || '').replace(/[&<>"']/g, function(ch){ return ({'&':'&','<':'<','>':'>','"':'"',"'":'''})[ch] || ch; }); } function renderShareOptionsWindow(win, landscapeUrl, squareUrl, shareUrl, heading){ if (!win || win.closed) return false; var safeHeading = escapeHtml(heading || 'Share options'); var safeLandscape = escapeHtml(landscapeUrl || ''); var safeSquare = escapeHtml(squareUrl || ''); var safeUrl = escapeHtml(shareUrl || ''); // Keep this HTML script-free. A nested script tag inside this inline footer script can break under Cloudflare Rocket Loader. var html = '' + safeHeading + '' + '' + '

' + safeHeading + '

'; win.document.open(); win.document.write(html); win.document.close(); try { var doc = win.document; var btn = doc.getElementById('copyLinkBtn'); var status = doc.getElementById('shareStatus'); var field = doc.getElementById('shareUrlField'); var urlToCopy = String(shareUrl || ''); function setCopied(){ if (status) status.textContent = 'Link copied.'; if (btn) { btn.textContent = 'Copied!'; win.setTimeout(function(){ btn.textContent = 'Copy link'; }, 1500); } } function focusField(){ if (!field) return; field.removeAttribute('readonly'); field.focus(); field.select(); field.setSelectionRange(0, field.value.length); field.setAttribute('readonly','readonly'); } function legacyCopy(text){ var ta = doc.createElement('textarea'); ta.value = text; ta.setAttribute('readonly','readonly'); ta.style.position='fixed'; ta.style.top='0'; ta.style.left='0'; ta.style.opacity='0.01'; ta.style.pointerEvents='none'; doc.body.appendChild(ta); ta.focus(); ta.select(); ta.setSelectionRange(0, ta.value.length); var ok=false; try{ ok=!!doc.execCommand('copy'); }catch(err){} doc.body.removeChild(ta); return ok; } win.__wiowCopyShareLink = async function(){ if (!urlToCopy) { if (status) status.textContent='No share URL available.'; return false; } focusField(); try { if (win.navigator && win.navigator.clipboard && typeof win.navigator.clipboard.writeText === 'function') { await win.navigator.clipboard.writeText(urlToCopy); setCopied(); return false; } } catch(err) {} if (legacyCopy(urlToCopy)) { setCopied(); return false; } if (status) status.textContent='Press Ctrl+C or Cmd+C to copy the selected link.'; focusField(); return false; }; if (btn) btn.addEventListener('click', function(e){ e.preventDefault(); win.__wiowCopyShareLink(); }); var nextBtn = doc.getElementById('nextComboBtn'); if (nextBtn) nextBtn.addEventListener('click', function(e){ e.preventDefault(); if (win.opener && win.opener.__wiowRefreshShareOptions) win.opener.__wiowRefreshShareOptions(win); }); var mainBtn = doc.getElementById('mainComboBtn'); if (mainBtn) mainBtn.addEventListener('click', function(e){ e.preventDefault(); if (win.opener && win.opener.__wiowResetShareOptions) win.opener.__wiowResetShareOptions(win); }); Array.prototype.slice.call(doc.querySelectorAll('.preview-frame img')).forEach(function(img){ img.addEventListener('click', function(){ var overlay=doc.createElement('div'); overlay.className='overlay'; var full=doc.createElement('img'); full.src=img.getAttribute('data-full') || img.src; full.alt='Preview'; overlay.appendChild(full); overlay.addEventListener('click', function(){ overlay.remove(); }); doc.body.appendChild(overlay); }); }); } catch(err) {} return true; } async function buildShareImage(container, options){ options = options || {}; var postId = container.getAttribute('data-post-id'); var sharePage = container.getAttribute('data-share-page'); var kind = (container.getAttribute('data-share-kind') || 'critics').toLowerCase(); var posterUrl = container.getAttribute('data-poster-url') || findPosterUrl(); if (!posterUrl){ posterUrl = ''; } var isRatings = (kind === 'ratings' || kind === 'ratings-admin' || kind === 'ratings-question'); var isAudience = (kind === 'audience' || kind === 'audience-teaser' || kind === 'audience-question'); var action = isRatings ? 'wiow_build_ratings_share_image' : (isAudience ? 'wiow_build_audience_share_image' : 'wiow_build_share_image'); var payload = new URLSearchParams(); payload.append('action', action); payload.append('post_id', String(postId)); payload.append('poster_url', posterUrl); payload.append('share_context', kind); if (options.force) { payload.append('force', '1'); } if (options.reset) { payload.append('reset_combo', '1'); } if (kind === 'ratings-admin') { payload.append('admin', '1'); } if (kind === 'ratings-question' || kind === 'audience-question' || kind === 'critics-question') { payload.append('questions', '1'); payload.append('mode', 'questions'); } if (kind === 'audience-teaser' || kind === 'critics-teaser') { payload.append('mode', 'teaser'); } var res = await fetch('https://worthitorwoke.com/wp-admin/admin-ajax.php', { method: 'POST', credentials: 'same-origin', headers: {'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'}, body: payload.toString() }); var data = await res.json(); if (!data || !data.success || !data.data){ throw new Error((data && data.data && data.data.message) ? data.data.message : 'Share build failed.'); } return { image_url: data.data.image_url, share_url: data.data.share_url || sharePage, cycle_image_url: data.data.cycle_image_url || '', poster_url: data.data.poster_url || posterUrl || '' }; } async function buildShareSquareImage(container, cycleImageUrl, posterUrl, options){ options = options || {}; var postId = container.getAttribute('data-post-id'); var sharePage = container.getAttribute('data-share-page'); var kind = (container.getAttribute('data-share-kind') || 'critics').toLowerCase(); var isRatings = (kind === 'ratings' || kind === 'ratings-admin' || kind === 'ratings-question'); var isAudience = (kind === 'audience' || kind === 'audience-teaser' || kind === 'audience-question'); var action = isRatings ? 'wiow_build_ratings_share_image_square' : (isAudience ? 'wiow_build_audience_share_image_square' : 'wiow_build_share_image_square'); var payload = new URLSearchParams(); payload.append('action', action); payload.append('post_id', String(postId)); payload.append('share_context', kind); if (kind === 'ratings-admin') { payload.append('admin', '1'); } if (kind === 'ratings-question' || kind === 'audience-question' || kind === 'critics-question') { payload.append('questions', '1'); payload.append('mode', 'questions'); } if (kind === 'audience-teaser' || kind === 'critics-teaser') { payload.append('mode', 'teaser'); } if (cycleImageUrl) { payload.append('cycle_image_url', cycleImageUrl); } if (posterUrl) { payload.append('poster_url', posterUrl); } if (options.force) { payload.append('force', '1'); } if (options.reset) { payload.append('reset_combo', '1'); } var res = await fetch('https://worthitorwoke.com/wp-admin/admin-ajax.php', { method: 'POST', credentials: 'same-origin', headers: {'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'}, body: payload.toString() }); var data = await res.json(); if (!data || !data.success || !data.data){ throw new Error((data && data.data && data.data.message) ? data.data.message : 'Square share build failed.'); } return { image_url: data.data.image_url, share_url: data.data.share_url || sharePage, cycle_image_url: data.data.cycle_image_url || cycleImageUrl || '', poster_url: data.data.poster_url || posterUrl || '' }; } window.__wiowRefreshShareOptions = async function(win){ if (!wiowCanAdminNext || !window.__wiowLastShareOptionsContext || !window.__wiowLastShareOptionsContext.row) return false; var ctx = window.__wiowLastShareOptionsContext; var row = ctx.row; var heading = ctx.heading || 'Share options'; var targetWin = win || ctx.win; try { renderShareOptionsLoadingWindow(targetWin, heading); var built = await buildShareImage(row, { force:true }); var builtSquare = await buildShareSquareImage(row, built.cycle_image_url || '', built.poster_url || '', { force:true }); if (!built || !built.image_url || !builtSquare || !builtSquare.image_url) throw new Error('Share build failed.'); window.__wiowLastShareOptionsContext = { row: row, heading: heading, win: targetWin }; renderShareOptionsWindow(targetWin, built.image_url, builtSquare.image_url, built.share_url || row.getAttribute('data-share-page') || '', heading); } catch(err) { if (targetWin && !targetWin.closed) { var msg = (err && err.message) ? err.message : 'Could not build next combo.'; targetWin.document.open(); targetWin.document.write('

Could not build next combo

' + escapeHtml(msg) + '

'); targetWin.document.close(); } } return false; }; window.__wiowResetShareOptions = async function(win){ if (!wiowCanAdminNext || !window.__wiowLastShareOptionsContext || !window.__wiowLastShareOptionsContext.row) return false; var ctx = window.__wiowLastShareOptionsContext; var row = ctx.row; var heading = ctx.heading || 'Share options'; var targetWin = win || ctx.win; try { renderShareOptionsLoadingWindow(targetWin, heading); var built = await buildShareImage(row, { force:true, reset:true }); var builtSquare = await buildShareSquareImage(row, built.cycle_image_url || '', built.poster_url || '', { force:true, reset:true }); if (!built || !built.image_url || !builtSquare || !builtSquare.image_url) throw new Error('Share build failed.'); window.__wiowLastShareOptionsContext = { row: row, heading: heading, win: targetWin }; renderShareOptionsWindow(targetWin, built.image_url, builtSquare.image_url, built.share_url || row.getAttribute('data-share-page') || '', heading); } catch(err) { if (targetWin && !targetWin.closed) { var msg = (err && err.message) ? err.message : 'Could not build main combo.'; targetWin.document.open(); targetWin.document.write('

Could not build main combo

' + escapeHtml(msg) + '

'); targetWin.document.close(); } } return false; }; // Unified capture-phase share handler. Chrome incognito can allow the visual // pointer animation while another script prevents the later bubbling click // handler from ever running. Handle all top-level share buttons here first. document.addEventListener('click', async function(e){ var targetEl = e.target && e.target.nodeType === 1 ? e.target : (e.target && e.target.parentElement ? e.target.parentElement : null); var btn = targetEl && targetEl.closest ? targetEl.closest('.wiow-share-btn') : null; if (!btn) return; // Ignore the Audience modal "Rate" button (it also has wiow-share-btn class in your CSS usage) if (btn.hasAttribute('data-wiow-audience-open')) return; var row = btn.closest('[data-wiow-share="1"], .wiow-share-row'); if (!row) return; var platform = btn.getAttribute('data-platform'); // Public top-level controls must work even when AJAX generation or membership-gated data is unavailable. // Options still uses the full image-builder path below. if (platform === 'x' || platform === 'link') { e.preventDefault(); e.stopPropagation(); var quickStatus = row.querySelector('.wiow-share-status'); var quickUrl = btn.getAttribute('data-copy-url') || row.getAttribute('data-share-page') || row.getAttribute('data-post-url') || wiowShareFallbackUrl(row); if (!quickUrl) { if (quickStatus) quickStatus.textContent = 'No share URL available.'; return; } if (platform === 'x') { openPopup(btn.getAttribute('href') || btn.getAttribute('data-wiow-x-intent') || wiowShareXIntentUrl(row)); if (quickStatus) quickStatus.textContent = ''; return; } if (quickStatus) quickStatus.textContent = 'Copying link…'; var copiedQuick = await wiowCopyShareText(quickUrl); var quickLabel = btn.querySelector('.wiow-share-btn__label'); var quickOriginal = quickLabel ? quickLabel.textContent : 'Copy link'; if (copiedQuick) { if (quickStatus) quickStatus.textContent = 'Link copied.'; if (quickLabel) { quickLabel.textContent = 'Copied!'; window.setTimeout(function(){ quickLabel.textContent = quickOriginal || 'Copy link'; }, 1500); } } else { if (quickStatus) quickStatus.textContent = 'Could not copy link.'; } return; } e.preventDefault(); var previewWin = null; if (platform === 'copy') { previewWin = openShareOptionsWindow(); var preloadKind = (row.getAttribute('data-share-kind') || 'critics').trim().toLowerCase(); var preloadHeading = (preloadKind === 'audience' || preloadKind === 'audience-teaser' || preloadKind === 'audience-question') ? 'Audience share options' : ((preloadKind === 'ratings' || preloadKind === 'ratings-admin' || preloadKind === 'ratings-question') ? 'Ratings share options' : 'Critic share options'); renderShareOptionsLoadingWindow(previewWin, preloadHeading); } var statusEl = row.querySelector('.wiow-share-status'); if (statusEl) statusEl.textContent = (platform === 'link') ? 'Copying link…' : 'Preparing share…'; try { var publicShareUrl = wiowShareFallbackUrl(row); var publicPostTitle = (row.getAttribute('data-post-title') || '').trim(); if (!publicPostTitle) publicPostTitle = 'this'; var publicShareKind = (row.getAttribute('data-share-kind') || 'critics').trim().toLowerCase(); var publicUpperTitle = publicPostTitle.toUpperCase(); var publicLineTwo = (publicShareKind === 'audience' || publicShareKind === 'audience-teaser' || publicShareKind === 'audience-question') ? 'See what the audience is saying.' : ((publicShareKind === 'ratings' || publicShareKind === 'ratings-admin' || publicShareKind === 'ratings-question') ? 'See the Worth it or Woke score.' : 'See what sane critics say.'); var publicBaseText = 'Is ' + publicUpperTitle + ' Worth it or Woke?\n\n' + publicLineTwo + '\n\nFollow @worthitorwoke for more.'; // Public top-level X and Copy Link controls should not depend on AJAX image generation. // The share URL itself carries the OG/Twitter metadata; scrapers can generate/fetch the image from that URL. if ((platform === 'x' || platform === 'link') && publicShareUrl) { if (platform === 'link') { var copiedPublicLink = await wiowCopyShareText(publicShareUrl); var publicLabel = btn.querySelector('.wiow-share-btn__label'); var publicOriginalLabel = publicLabel ? publicLabel.textContent : ''; if (copiedPublicLink) { if (statusEl) statusEl.textContent = 'Link copied.'; if (publicLabel) { publicLabel.textContent = 'Copied!'; window.setTimeout(function(){ publicLabel.textContent = publicOriginalLabel || 'Copy link'; }, 1500); } } else { if (statusEl) statusEl.textContent = 'Could not copy link.'; } return; } openPopup('https://twitter.com/intent/tweet?text=' + encodeURIComponent(publicBaseText) + '&url=' + encodeURIComponent(publicShareUrl)); if (statusEl) statusEl.textContent = ''; return; } var built; var builtSquare = null; if (platform === 'copy') { // Build the landscape first so it chooses exactly one featured/gallery cycle image, // then pass that same image to the square builder. This prevents two square // outputs or mismatched gallery states in the Share Options window. built = await buildShareImage(row, { force:true }); builtSquare = await buildShareSquareImage(row, built.cycle_image_url || '', built.poster_url || '', { force:true }); if (!built || !built.image_url) { throw new Error('Landscape share build failed.'); } if (!builtSquare || !builtSquare.image_url) { throw new Error('Square share build failed.'); } } else { built = await buildShareImage(row); } var shareUrl = built.share_url; var postUrl = (row.getAttribute('data-post-url') || '').trim() || shareUrl; var postTitle = (row.getAttribute('data-post-title') || '').trim(); if (!postTitle) postTitle = 'this'; var shareKind = (row.getAttribute('data-share-kind') || 'critics').trim().toLowerCase(); var upperTitle = postTitle.toUpperCase(); var lineTwo = (shareKind === 'audience' || shareKind === 'audience-teaser' || shareKind === 'audience-question') ? 'See what the audience is saying.' : ((shareKind === 'ratings' || shareKind === 'ratings-admin' || shareKind === 'ratings-question') ? 'See the Worth it or Woke score.' : 'See what sane critics say.'); var baseText = 'Is ' + upperTitle + ' Worth it or Woke?\n\n' + lineTwo + '\n\nFollow @worthitorwoke for more.'; var textWithUrl = baseText + '\n\n' + shareUrl; var postTextWithUrl = baseText + '\n\n' + postUrl; var encodedUrl = encodeURIComponent(shareUrl); var encodedBaseText = encodeURIComponent(baseText); var encodedTextWithUrl = encodeURIComponent(textWithUrl); if (platform === 'link') { var copiedLink = await wiowCopyShareText(shareUrl); var label = btn.querySelector('.wiow-share-btn__label'); var originalLabel = label ? label.textContent : ''; if (copiedLink) { if (statusEl) statusEl.textContent = 'Link copied.'; if (label) { label.textContent = 'Copied!'; window.setTimeout(function(){ label.textContent = originalLabel || 'Copy link'; }, 1500); } } else { if (statusEl) statusEl.textContent = 'Could not copy link.'; } return; } if (platform === 'x'){ // X gets the URL through the intent URL parameter, so do not also duplicate it in the tweet text. openPopup('https://twitter.com/intent/tweet?text=' + encodedBaseText + '&url=' + encodedUrl); } else if (platform === 'facebook'){ // Facebook sharing has been intentionally removed from this plugin flow. if (statusEl) statusEl.textContent = 'Facebook sharing is currently disabled.'; } else if (platform === 'copy'){ var heading = (shareKind === 'audience' || shareKind === 'audience-teaser' || shareKind === 'audience-question') ? 'Audience share options' : ((shareKind === 'ratings' || shareKind === 'ratings-admin' || shareKind === 'ratings-question') ? 'Ratings share options' : 'Critic share options'); window.__wiowLastShareOptionsContext = { row: row, heading: heading, win: previewWin }; var shown = renderShareOptionsWindow(previewWin, built.image_url, (builtSquare ? builtSquare.image_url : ''), shareUrl, heading); if (!shown) { var copied = false; if (navigator.clipboard && window.isSecureContext && navigator.clipboard.writeText){ try { await navigator.clipboard.writeText(shareUrl); copied = true; } catch (copyErr) {} } if (!copied) { var ta = document.createElement('textarea'); ta.value = shareUrl; ta.setAttribute('readonly', 'readonly'); ta.style.position = 'fixed'; ta.style.opacity = '0'; document.body.appendChild(ta); ta.focus(); ta.select(); ta.setSelectionRange(0, ta.value.length); copied = !!document.execCommand('copy'); ta.remove(); } } } if (statusEl) statusEl.textContent = (platform === 'copy') ? 'Ready.' : ''; } catch(err){ if (previewWin && !previewWin.closed) { previewWin.close(); } if (statusEl) statusEl.textContent = (err && err.message) ? err.message : 'Could not share.'; } }, true); })();