1

场景:当用户在输入字段中键入并且文本变得比字段宽度长时,文本会随着用户键入而滚动。
我依靠 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)
};
4

1 回答 1

2

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

解决方法是改用 textarea(并将其设置为输入的样式)。element.scrollLeft 将在元素是文本区域时起作用。

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

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

于 2018-01-18T22:37:22.730 回答