您提供的代碼在打開模態(tài)框時禁用滾動似乎是正確的。然而,有幾個可能導(dǎo)致問題的原因:
openModal
函數(shù)。相反,它直接操作模態(tài)框的樣式。這意味著isModalOpen
變量沒有被設(shè)置為true
,disableFullPageScroll
函數(shù)也沒有被調(diào)用。要解決這個問題,您應(yīng)該在按鈕被點擊時使用openModal
函數(shù):<button id="openModalButton" class="w3-button w3-black">打開模態(tài)框</button>
closeModal
函數(shù)。應(yīng)該像這樣:
<span id="closeModalButton" class="w3-button w3-display-topright">×</span>
closeModal
函數(shù)沒有在全局作用域中定義,但它被從HTML中調(diào)用。這可能會導(dǎo)致錯誤。要解決這個問題,您應(yīng)該在全局作用域中定義closeModal
函數(shù):window.closeModal = closeModal;
disableFullPageScroll
和enableFullPageScroll
函數(shù)使用FullPage.js的方法來禁用和啟用滾動。如果您沒有使用FullPage.js,或者它沒有正確初始化,這些方法將不起作用。您應(yīng)該檢查FullPage.js是否正確包含和初始化在您的項目中。
滾動事件處理程序中的preventDefault
和stopPropagation
方法可能不足以阻止所有情況下的滾動。在模態(tài)框打開時,您可能還需要將
overflow
樣式設(shè)置為hidden
,并在模態(tài)框關(guān)閉時將其重置為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'; }
請嘗試這些建議,并告訴我是否解決了您的問題。