在IE / Edge Javascript中获取输入滚动位置(包括JSFiddle)

时间:2018-01-18 21:37:24

标签: javascript internet-explorer input microsoft-edge scroll-position

方案: 当用户在输入字段中键入并且文本变得比字段宽度长时,文本会在用户键入时滚动 我依靠scrollLeft来获取输入字段上的滚动位置,我最近才意识到这个相同的代码在IE或Edge中无效(它在Chrome,Firefox和Safari中工作)。

调查一下,element.scrollLeft与IE / Edge兼容,但无论出于何种原因,它只在这些浏览器中返回0。我在stackoverflow上看到了与我类似的另一个问题,但似乎没有解决方法。

如何在IE / Edge中获取输入字段的滚动位置?

小提琴:https://jsfiddle.net/kellyag/bwac46yz/8/

function inputScrollPosition () {
  let input = document.getElementById('myInput');
  let scrollPosition = input.scrollLeft;

  console.log(scrollPosition)
};

1 个答案:

答案 0 :(得分:2)

我根据此处的讨论找到了解决方法:https://github.com/garysieling/jquery-highlighttextarea/issues/35

解决方法是使用textarea(并将其设置为输入样式)。 当元素是textarea时,element.scrollLeft将起作用。

<textarea id="myInput" cols="50" rows="1" style="white-space: nowrap; overflow: hidden;"></textarea>

此版本仍需要一些额外的CSS样式,但代码正在运行: https://jsfiddle.net/kellyag/ywzus94m/2/