P粉8055354342023-08-18 22:20:41
您提供的程式碼在打開模態框時禁用滾動似乎是正確的。然而,有幾個可能導致問題的原因:
openModal
函數。相反,它直接操作模態框的樣式。這意味著isModalOpen
變數沒有被設定為true
,disableFullPageScroll
函數也沒有被呼叫。要解決這個問題,您應該在按鈕被點擊時使用openModal
函數:<button id="openModalButton" class="w3-button w3-black">打开模态框</button>
closeModal
函數。應該是這樣:<span id="closeModalButton" class="w3-button w3-display-topright">×</span>
closeModal
函數沒有在全域作用域中定義,但它被從HTML中呼叫。這可能會導致錯誤。要解決這個問題,您應該在全域作用域中定義closeModal
函數:window.closeModal = closeModal;
disableFullPageScroll
和enableFullPageScroll
函式使用FullPage.js的方法來停用和啟用捲動。如果您沒有使用FullPage.js,或者它沒有正確初始化,這些方法將無法運作。您應該檢查FullPage.js是否正確包含和初始化在您的專案中。
滾動事件處理程序中的preventDefault
和stopPropagation
方法可能不足以阻止所有情況下的捲動。在模態框打開時,您可能還需要將
overflow
樣式設定為hidden
,並在模態框關閉時將其重設為auto
:
function disableFullPageScroll() { $.fn.fullpage.setAllowScrolling(false); $.fn.fullpage.setKeyboardScrolling(false); document.body.style.overflow = 'hidden'; } function enableFullPageScroll() { $.fn.fullpage.setAllowScrolling(true); $.fn.fullpage.setKeyboardScrolling(true); document.body.style.overflow = 'auto'; }
請嘗試這些建議,並告訴我是否解決了您的問題。