(function(){ class SPZCustomToast extends SPZ.BaseElement { constructor(element) { super(element); } isLayoutSupported(layout) { return layout === SPZCore.Layout.LOGIC; } buildCallback(){ /* this.registerAction('showToast', (invocation) => { console.info('[showToast]',invocation.args ); }); */ console.info('[build toast]', ); window.customToast = (message, type) => { const msg = (type == 'error'? '❗ ' : "😀 ") + message; const toast = document.querySelector('#custom_solution_toast'); SPZ.whenApiDefined(toast).then(apis=>{ apis.showToast(msg, 3000); }) } } } SPZ.defineElement('spz-custom-toast', SPZCustomToast); })() class SpzCustomProductImpression extends SPZ.BaseElement { constructor(element) { super(element); } isLayoutSupported(layout) { return true; } mountCallback() { const script = this.element; let isInView = false; const rootSelecter = script.getAttribute('root-selector') || 'spz-product-snippet'; const root = script.closest(rootSelecter); const callback = (entries, observer) => { entries.forEach(entry => { if (entry.isIntersecting && !isInView) { isInView = true; window.csTracker.track('impression', { name: this.element.getAttribute('product-title'), id: this.element.getAttribute('product-id'), }); window.csTracker.track('function_expose', { event_name: 'function_expose', event_type: 'expose', event_info: JSON.stringify({ skit_user_id: window.csTracker.getSkitUid(), product_ids: [this.element.getAttribute('product-id')], expose_type: 1 }), }, ['sa']); console.log('Product in view', this.element.getAttribute('product-id')); } }) }; const observer = new IntersectionObserver(callback, { threshold: 1 }); observer.observe(root); } } SPZ.defineElement('spz-custom-product-impression', SpzCustomProductImpression); (function(){ class SPZCustomNetworkDetection extends SPZ.BaseElement { constructor(element) { super(element); this.payResult = null; } isLayoutSupported(layout) { return layout === SPZCore.Layout.LOGIC; } mountCallback(){ this.addNetWorkListener(); const bg = document.querySelector('.network_wrapper'); bg.onclick = function(e){ e.stopPropagation(); } } addNetWorkListener(){ window.addEventListener('online', () => { console.warn('[network online]'); const box = document.getElementById('network_tip_box'); SPZ.whenApiDefined(box).then(apis=>{ apis.close(); window?.currentVideoPlayer?.play(); }) }); window.addEventListener('offline', () => { console.warn('[network offline]'); const box = document.getElementById('network_tip_box'); SPZ.whenApiDefined(box).then(apis=>{ apis.open(); window?.currentVideoPlayer?.pause(); }) }); } } SPZ.defineElement('spz-custom-network-detection', SPZCustomNetworkDetection); })()
You have no internet connection
Please check your internetconnection and try again

  • Log in
  • Create an account
  • History
  • More links
History

  • History
  • Log in
  • Create an account
  • (function(){ let w = window.innerWidth; function setHeaderCssVar() { const headerEle = document.getElementById('shoplaza-section-header'); if(!headerEle){ return }; document.body.style.setProperty('--window-height', `${window.innerHeight}px`); document.body.style.setProperty('--header-height', `${headerEle.clientHeight}px`); const mdScorllHideEle = headerEle.querySelector('.header__mobile .header__scroll_hide'); if (mdScorllHideEle) { document.body.style.setProperty('--header-scroll-hide-height-md', `${mdScorllHideEle.clientHeight}px`); } const pcScorllHideEle = headerEle.querySelector('.header__desktop .header__scroll_hide'); if (pcScorllHideEle) { document.body.style.setProperty('--header-scroll-hide-height-pc', `${pcScorllHideEle.clientHeight}px`); } } function handlResize() { if(w == window.innerWidth){return}; w = window.innerWidth; setHeaderCssVar(); }; function init(){ setHeaderCssVar(); window.removeEventListener('resize', window._theme_header_listener) window._theme_header_listener = handlResize; window.addEventListener('resize', window._theme_header_listener); } init(); })();

    Recommended

    View more >>
    View more

    Apocalypse: Build a New World with My Fat

    from $0.00 $9.90

    The Ice-Cold Landlady

    from $0.00 $9.90

    Divine Combat: I Slay Gods with Tang Poems

    from $0.00 $9.90

    Anti-Exploitation Platform System

    from $0.00 $9.90

    Misguided Love: The Mu's Romance

    from $0.00 $9.90

    Sugar-Coated Love Melody

    from $0.00 $9.90

    The Tsundere Roommate I Hate Is My Online Love!

    from $0.00 $9.90

    The Moment Dreams Shatter

    from $0.00 $9.90

    Reborn in the 80s: A Total Turnaround

    from $0.00 $9.90

    Drama List

    Commuter Horror World: I Own a Subway

    from $0.00 $9.90

    King of the Undead

    from $0.00 $9.90

    Cyber Cultivation: 5000 Years

    from $0.00 $9.90

    1978 Comeback: I Rise to Tycoon

    from $0.00 $9.90

    Doomsday Live: Only I Know the Ending

    from $0.00 $9.90

    Bone Seer of the Forbidden Zone

    from $0.00 $9.90

    Grant Your Wish

    from $0.00 $9.90

    Cold Wife? Secretly a Hopeless Romantic!

    from $0.00 $9.90

    Commuter Horror World: I Own a Subway

    from $0.00 $9.90

    King of the Undead

    from $0.00 $9.90

    Cyber Cultivation: 5000 Years

    from $0.00 $9.90

    1978 Comeback: I Rise to Tycoon

    from $0.00 $9.90

    Doomsday Live: Only I Know the Ending

    from $0.00 $9.90

    Bone Seer of the Forbidden Zone

    from $0.00 $9.90

    Grant Your Wish

    from $0.00 $9.90

    Cold Wife? Secretly a Hopeless Romantic!

    from $0.00 $9.90

    Anti-Exploitation Platform System

    from $0.00 $9.90

    My Tang Dynasty Babe

    from $0.00 $9.90
    View more

    ABOUT

    • Terms of Service
    • Privacy Policy
    • Refund Policy
    • Acceptable Use Policy
    • FAQs

    ABOUT

    • Terms of Service
    • Privacy Policy
    • Refund Policy
    • Acceptable Use Policy
    • FAQs

    CONTACT US

    • support@dramawebshorts.com

      HK MEETFUN LIMITED

      FLAT/RM B3 19/F TUNG LEE COMM BLD 65/100 SHEUNG WAN HK

    CONTACT US

    • support@dramawebshorts.com

      HK MEETFUN LIMITED

      FLAT/RM B3 19/F TUNG LEE COMM BLD 65/100 SHEUNG WAN HK

     All Rights Reserved. 2026 Fantastic Short Inc
    Add 'PopularShort' to the desktop.
    Add 'BestShort iOS' to the desktop
    1. Click on the toolbar 2. Select “Add to Home Screen”.
    (function () { class SPZCutomRightsManager extends SPZ.BaseElement { constructor(element) { super(element); } isLayoutSupported(layout) { return layout === 'logic'; } buildCallback() { this.setupAction_(); } setupAction_() { this.registerAction('removeSignatureQueryParams', () => { window.keepRightsManager?.removeSignatureQueryParams(); }); } } SPZ.defineElement('spz-custom-rights-manager', SPZCutomRightsManager); })(); (function(){ class SPZCustomContinueSubscript extends SPZ.BaseElement { constructor(element) { super(element); this.payResult = null; } isLayoutSupported(layout) { return layout === SPZCore.Layout.LOGIC; } buildCallback(){ this.registerAction('update', (invocation) => { this.updateSubscript(); }); } updateSubscript(){ async function showSubscript(){ const imageDoms =[]; const productIds = []; const listItems = document.querySelectorAll('.recently_view_carousel .product-snippet__img-link>spz-img:not(:has(.custom_subscript_item))'); /* console.info('[listItems]', listItems); */ listItems.forEach(item=>{ productIds.push(item.getAttribute('product-id')); imageDoms.push(item); }); if(productIds.length ==0) return; let result = []; try{ const res = await fetch(location.origin+"/apps/best-short/api/v1/subscript", { method:"POST", body: JSON.stringify({ type:'skit', resource_ids: productIds })}) .then(res=>res.json()); result = res?.data || []; }catch(e){ console.warn('[subscript get error]', e); } result.forEach(ele=>{ const index = productIds.indexOf(ele.id); if(index>=0 && ele.styles?.length > 0){ const listItem = imageDoms[index]; ele.styles.forEach(style=>{ const _item = document.createElement('div'); _item.classList.add('custom_subscript_item'); _item.classList.add('custom_position_'+style.position); _item.classList.add(style.icon); const _span = document.createElement('span'); _span.classList.add('custom_subscript_item_text'); _span.innerHTML = style.content; _item.appendChild(_span); listItem.appendChild(_item.cloneNode(true)); }) } }) } setTimeout(showSubscript, 200); } } SPZ.defineElement('spz-custom-continue-watch-subscript', SPZCustomContinueSubscript); })() (function(){ class SPZCustomSearchPrevSubscript extends SPZ.BaseElement { constructor(element) { super(element); this.payResult = null; } isLayoutSupported(layout) { return layout === SPZCore.Layout.LOGIC; } buildCallback(){ this.registerAction('update', (invocation) => { this.updateSubscript(); }); } updateSubscript(){ async function showSubscript(){ const imageDoms =[]; const productIds = []; const listItems = document.querySelectorAll('.header__search_product_list>.shoplazza-product-snippet'); /* console.info('[listItems]', listItems); */ listItems.forEach(item=>{ const img = item.querySelector('spz-img.product-snippet__img:not(:has(.custom_subscript_item))'); if(img){ imageDoms.push(img); productIds.push(item.getAttribute('product-id')); } }); if(productIds.length ==0) return; let result = []; try{ const res = await fetch(location.origin+"/apps/best-short/api/v1/subscript", { method:"POST", body: JSON.stringify({ type:'skit', resource_ids: productIds })}) .then(res=>res.json()); result = res?.data || []; }catch(e){ console.warn('[subscript get error]', e); } result.forEach(ele=>{ const index = productIds.indexOf(ele.id); if(index>=0 && ele.styles?.length > 0){ const listItem = imageDoms[index]; ele.styles.forEach(style=>{ const _item = document.createElement('div'); _item.classList.add('custom_subscript_item'); _item.classList.add('custom_position_'+style.position); _item.classList.add(style.icon); const _span = document.createElement('span'); _span.classList.add('custom_subscript_item_text'); _span.innerHTML = style.content; _item.appendChild(_span); listItem.appendChild(_item.cloneNode(true)); }) } }) } setTimeout(showSubscript, 200); } } SPZ.defineElement('spz-custom-search-prev-subscript', SPZCustomSearchPrevSubscript); })()
    Unlock More Deals with Your Email
    Your email
    👇 Only 1 step to Get Your Discount!
    Submit
    Skip to Watch
    const emailRegex = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; class EmailModal { /** * 邮箱类型 * email_missing: 邮箱缺失 * email_invalid: 邮箱无效 * email_success: 邮箱正确 */ emailType = 'email_missing'; constructor() { if(!this.initQueryParams()) return; this.initDOM(); this.getModalConfig(); this.initInputBlur(); this.initEmailBtnClick(); this.initCloseBtnClick(); this.initSkipBtnClick(); } initQueryParams() { const queryParams = new URLSearchParams(window.location.search); this.utmSource = queryParams.get('utm_source'); this.utmCampaign = queryParams.get('utm_campaign'); this.templateName = "index"; if(this.utmSource === 'fb' || queryParams.has('fbclid')) return true; return false; } initDOM() { this.emailBox = document.querySelector('#custom_solution_modal_email'); this.emailInputBox = this.emailBox.querySelector('.content-box-input'); this.emailInput = this.emailBox.querySelector('.content-box-input .input'); this.errorText = this.emailBox.querySelector('.content-box-input .error-text'); this.emailBtn = this.emailBox.querySelector('.content-box-btn'); this.closeBtn = this.emailBox.querySelector('.content-box-close'); this.skipBtn = this.emailBox.querySelector('.skip-box-btn'); } initBreforeUnload() { this.beforeUnloadFn = (e) => { e.preventDefault(); e.returnValue = ''; this.popupClickEvent('ad_email_leave'); return ''; } window.addEventListener('beforeunload', this.beforeUnloadFn); } initCloseBtnClick() { this.closeBtn.addEventListener('click', () => { this.closeModal(); this.popupClickEvent('ad_email_modal_close'); }) } initSkipBtnClick() { this.skipBtn.addEventListener('click', () => { this.closeModal(); this.popupClickEvent('ad_email_modal_skip'); }) } initInputBlur() { this.emailInput.addEventListener('blur', () => { const email = this.emailInput.value.trim(); if (emailRegex.test(email)) { this.emailInputBox.classList.remove('error'); this.emailBtn.removeAttribute('disabled'); this.emailType = 'email_success'; } else { if(email){ this.errorText.textContent = 'Please enter a valid Email'; this.emailType = 'email_invalid'; }else{ this.errorText.textContent = 'Please enter your Email'; this.emailType = 'email_missing'; } this.emailInputBox.classList.add('error'); this.emailBtn.setAttribute('disabled', 'disabled'); } this.popupClickEvent('ad_email_click'); }) } initEmailBtnClick() { this.emailBtn.addEventListener('click', async(e) => { if(this.emailBtn.getAttribute('disabled')) return; this.popupClickEvent('ad_email_continue_click'); this.emailBtn.setAttribute('disabled', 'disabled'); const email = this.emailInput.value.trim(); try { this.resumeVideo(); await this.bindEmail(email); this.closeModal(); this.emailBtn.removeAttribute('disabled'); this.popupClickEvent('ad_video_page_enter_binding'); } catch (error) { this.emailBtn.removeAttribute('disabled'); this.pauseVideo(); } }) } pauseVideo() { console.log('pauseVideo'); const playerReadyFn = () => { if(this.templateName === 'product' && window.currentVideoPlayer){ window.currentVideoPlayer.stop(); window.currentVideoPlayer.toggleGestureDisabled(true); } window.removeEventListener('BSPlayerReady', playerReadyFn); } playerReadyFn(); window.addEventListener('BSPlayerReady', playerReadyFn); } resumeVideo() { if(this.templateName === 'product' && window.currentVideoPlayer){ window.currentVideoPlayer.play(); window.currentVideoPlayer.toggleGestureDisabled(false); } } async getModalConfig() { const channel = 'facebook'; const res = await fetch(`/apps/best-short/api/v1/customer/information-collection/${channel}`); if(!res.ok) return; const data = await res.json(); const templateName = this.templateName; if(data.information && data.information.nick_name) return; if(data.config){ const config = data.config; if((templateName === 'index' && config.home) || (templateName === 'product' && config.preview_page)){ this.openModal(); } } } async bindEmail() { const email = this.emailInput.value.trim(); const res = await fetch('/apps/best-short/api/v1/customer/email_bind', { method: 'POST', body: JSON.stringify({ email: email }), }); if(!res.ok){ const data = await res.json(); window.C_APPS_COMMON.plugin_toast.show({ content: data.error || 'The email you entered has been bound', duration: 3000, }) return Promise.reject(); } localStorage.setItem('bind_modal_email', email); } openModal() { SPZ.whenApiDefined(this.emailBox).then(apis => { apis.open(); }) this.popuplmpressionEvent(); this.timer =setTimeout(() => { // 30s后如果邮箱输入框没有输入内容,则触发超时事件 !this.errorText.textContent && this.popupClickEvent('ad_email_modal_timeout'); }, 30000); this.pauseVideo(); } closeModal() { SPZ.whenApiDefined(this.emailBox).then(apis => { apis.close(); }) const templateName = this.templateName; if(templateName === 'index'){ this.popupClickEvent('ad_entry_count_home'); }else if(templateName === 'product'){ this.popupClickEvent('ad_entry_count_play'); } this.timer && clearTimeout(this.timer); this.resumeVideo(); } /** * 信息搜集弹窗曝光 */ popuplmpressionEvent() { const eventInfo = { common_dj_event_name: "ad_email_modal_show", ad_source: this.utmSource || '', campaign_id: this.utmCampaign || '', page_type: this.templateName, skit_user_id: window.csTracker?.getSkitUid?.(), } window.csTracker.track('ad_email_modal_show', eventInfo); window.csTracker.track('function_expose', { event_name: 'function_expose', event_type: 'popup_expose', event_info: JSON.stringify(eventInfo), }, ['sa']); } /** * 信息搜集弹窗点击 */ popupClickEvent(actionType) { actionType = actionType || ''; const eventInfo = { common_dj_event_name: "ad_email_modal_click", ad_source: this.utmSource || '', campaign_id: this.utmCampaign || '', page_type: this.templateName, email_type: this.emailType, action_type: actionType, skit_user_id: window.csTracker?.getSkitUid?.(), } window.csTracker.track('ad_email_modal_click', eventInfo); window.csTracker.track('function_click', { event_name: 'function_click', event_type: 'popup_click', event_info: JSON.stringify(eventInfo), }, ['sa']); } } new EmailModal();