2013-11-14 75 views
3

我想在主頁面上禁用滾動功能,但當鼠標懸停在主頁上時,不會在iframe內滾動頁面。 你可以看到我的意思是更清楚here在Firefox中禁用主窗口滾動onmouseenter iframe

如果iframe正在拾取mousewheel事件,那麼當鼠標位於iframe中時,我不希望整個頁面向下滾動。請注意,它正在使用chrome而不是ff。

編輯:鍵盤組件甚至按預期工作!

注:

滾動啓用/禁用基於代碼here

回答

5

更簡單的解決:

給你的上級機構(在本例中"bodyID")一個ID,然後在您的啓用和禁用滾動功能只需添加:

function disable_scroll() 
{ 
    document.getElementById("bodyID").style.overflow="hidden"; 
} 

function enable_scroll() 
{ 
    document.getElementById("bodyID").style.overflow="auto"; 
} 

基本上,因爲您不希望父頁面滾動,而不是針對單個事件,只需在光標位於iframe的內部時禁用滾動父頁面。簡單,跨瀏覽器,更直接。

事實上,你可以消除90%的代碼,而只是使用

function disable_scroll() 
{ 
    document.getElementById("bodyID").style.overflow="hidden"; 
} 

function enable_scroll() 
{ 
    document.getElementById("bodyID").style.overflow="auto"; 
} 
document.getElementById("miframe").onmouseenter = disable_scroll; 
document.getElementById("miframe").onmouseleave = enable_scroll; 

你可以使用document.body,但運行陷入混亂,當你與JSBin或喜歡玩,有一個半打(確定,三,但仍然)documentsbodies

檢查修改JSBIN here

+1

不錯!沒想到那個!我會一直選擇一個更簡單的解決方案。不過,我想知道爲什麼其他解決方案在ff中不起作用。 – Rested

+1

說實話,我也是。我自己有點好奇。 –