当内部div被赋予焦点时,防止div滚动到顶部 - IE 11

时间:2016-02-26 10:59:08

标签: javascript internet-explorer internet-explorer-11

我有一个外部div,style.overflow设置为auto。它包含一个更大的子div,它使外部div变得可滚动。

当外部div滚动到底部时,将焦点对准内部div会导致滚动位置返回到左上角(0,0)。这只发生在IE 11上。通过下面的链接提供了该问题的一个工作示例(单击时div被赋予焦点)

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

有没有办法阻止窗口滚动到顶部?

1 个答案:

答案 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;
}