2016-02-26 76 views
3

我有一個外部div與style.overflow設置爲auto。它包含一個更大的子div,它使外部div變成可滾動的。當內部div被給予焦點時防止div滾動到頂部 - IE 11

當外部div滾動到底部時,給內部div賦予焦點會導致滾動位置返回到左上角(0,0)。這只是發生在IE 11的問題的工作示例通過下面的鏈接(點擊時的股利將獲得焦點)

https://jsfiddle.net/wy6u8b76/6/

提供的是有沒有辦法阻止窗口滾動到頂部?

回答

1

我能夠通過預先設置scrollTop爲0來解決此問題,然後移動邊距使其保持在同一位置。最後,你可以撤消所有這種瘋狂。

下面是修改後的示例:https://jsfiddle.net/2n1f25nk/1/

document.getElementById('div1').onclick = function() { 
    var div1 = document.getElementById('div1'); 
    var div2 = document.getElementById('div2'); 
    var scrollTop = div1.scrollTop; 
    div2.style.marginTop = (-scrollTop) + 'px'; 
    div1.scrollTop = 0; 
    // give focus to inner div 
    document.getElementById('div2').focus(); 
    // Undo the horribleness 
    div2.style.marginTop = '0px'; 
    div1.scrollTop = scrollTop; 
} 
+0

使用'setActive'嘗試。這就像沒有滾動的「焦點」,它只在IE中可用。這裏有一個鏈接到另一篇文章,我描述了我如何使用它來完成基本相同的事情。 https://stackoverflow.com/questions/40901431/ie11-focusing-child-div-causes-parent-to-scroll-to-top/40923837#40923837 –