第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當(dāng)用戶離開頁面時,如何使用 Aplinejs 觸發(fā)模式?

當(dāng)用戶離開頁面時,如何使用 Aplinejs 觸發(fā)模式?

富國滬深 2023-04-14 15:03:32
我有一個 Bootstrap 模式,需要在用戶離開頁面時觸發(fā)。在普通 JS 中,解決方案是監(jiān)聽 mouseleave 事件,檢查用戶之前是否手動關(guān)閉了模態(tài)框,如果沒有,則顯示模態(tài)框。document.addEventListener("mouseleave", function (e) {        if (e.clientY < 0) {          if (localStorage.getItem('newsLetterSignUp') === null) {            $('someModal').modal();          }        }      }, false);我正在嘗試使用 Apline.js 實現(xiàn)相同的行為。第一種方法是在模式本身上設(shè)置事件處理程序:(我有一個自定義模型 CSS 類 .newsletter-modal 而不是 Bootstrap 的 .modal 因為我想用 Alpine 處理可見性)<div x-data="newsletter()">    <div      x-show="showModal"      @mouseleave.document="revealModal"      class="newsletter-modal show fade"      id="mailingListModal"      tabindex="-1"      role="dialog"      aria-labelledby="mailingListModal"      aria-hidden="true"    >      <div class="modal-dialog modal-lg" role="document">        <div class="modal-content" @click.away="showModal = false"> [modal content] </div>      </div>  </div> <--- JS code to handle the modal actions --->    <script>    window.newsletter = function() {      return {        showModal: true,        revealModal(e) {          alert('leave');          if (e.clientY < 0 && localStorage.getItem('newsLetterSignUp') === null) {            this.showModal = true;          }        },        closeNewsletterModal() {          this.showModal = false;          localStorage.setItem('newsLetterSignUp', JSON.stringify(new Date()));        }      }    }  </script>        我的想法是將 .document 屬性添加到 @mouseleave 事件以將其綁定到文檔,但這沒有效果。另一種方法是在 上設(shè)置 @mouseleave 事件,分派事件并在模態(tài)上偵聽事件。但這也沒有導(dǎo)致事件在 mouseleave 上被觸發(fā)。
查看完整描述

1 回答

?
慕沐林林

TA貢獻(xiàn)2016條經(jīng)驗 獲得超9個贊

結(jié)果發(fā)現(xiàn)問題不在事件處理程序或 Alpine 中,而是在 Firefox 中。在 Firefox 中,當(dāng)用戶將鼠標(biāo)導(dǎo)航離開窗口時不會觸發(fā) mouseleave 事件。


因此 Firefox 的解決方案是添加一個額外的事件偵聽器來跟蹤鼠標(biāo)移動。并在 e.clientY < 10 時觸發(fā)


// HTML

<div x-data="newsletter()" @mouseleave.window="revealModal" @mousemove.document="isUserLeaving"> ... </div>

// JS

isUserLeaving(e) {

? ?if (e.clientY < 10) {

? ? ? ?this.revealModal();

? ?}

}


查看完整回答
反對 回復(fù) 2023-04-14
  • 1 回答
  • 0 關(guān)注
  • 105 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號