我有一个外部div,style.overflow
设置为auto
。它包含一个更大的子div,它使外部div变得可滚动。
当外部div滚动到底部时,将焦点对准内部div会导致滚动位置返回到左上角(0,0)。这只发生在IE 11上。通过下面的链接提供了该问题的一个工作示例(单击时div被赋予焦点)
https://jsfiddle.net/wy6u8b76/6/
有没有办法阻止窗口滚动到顶部?
答案 0 :(得分: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;
}