Javascript IE11中的输入永远不会改变
我不确定我是疯了还是这是IE11中的一个bugJavascript IE11中的输入永远不会改变,javascript,internet-explorer-11,Javascript,Internet Explorer 11,我不确定我是疯了还是这是IE11中的一个bug 在IE11中打开此演示: 开始输入 当文本溢出时,您会注意到scrollLeft和scrollWidth值从未更改 设置正确。是否缺少获取正确滚动值的方法?我也在寻找解决此问题的方法。我花了一段时间才找到您的问题(并在寻找解决方案时编辑) 在此期间,我可以与你分享我发现的一些小作品 在文本区域中使用以下css属性,并将行数设置为1 <textarea id="demo1" cols="40" rows="1" style="white-
- 在IE11中打开此演示:
- 开始输入
- 当文本溢出时,您会注意到
和scrollLeft
值从未更改scrollWidth
设置正确。是否缺少获取正确滚动值的方法?我也在寻找解决此问题的方法。我花了一段时间才找到您的问题(并在寻找解决方案时编辑)
在此期间,我可以与你分享我发现的一些小作品
在文本区域中使用以下css属性,并将行数设置为1
<textarea id="demo1" cols="40" rows="1" style="white-space: nowrap; overflow: hidden;">Lorem ipsum dolor sit amet, vulputate molestie nec dui.</textarea>
Lorem ipsum door sit amet,vulputate molectie nec dui。
这将允许您使用文本区域,就像它是文本类型的输入一样。ScrollLeft在文本区域为IE工作
如果您碰巧在IE>9中找到输入scrollLeft属性的替代项,请共享!
我希望此解决方法对您有所帮助。似乎只有“TextRange”对象(在Edge中已弃用)可以帮助您使用IE 11:
var getScrollLeftAndScrollWidth = function (inputElement) {
var range = inputElement.createTextRange();
var inputStyle = window.getComputedStyle(inputElement, undefined);
var paddingLeft = parseFloat(inputStyle.paddingLeft);
var paddingRight = parseFloat(inputStyle.paddingRight);
var rangeRect = range.getBoundingClientRect();
var scrollLeft = inputElement.getBoundingClientRect().left + inputElement.clientLeft + paddingLeft - rangeRect.left;
var scrollWidth = Math.max(inputElement.clientWidth, paddingLeft + (rangeRect.right - rangeRect.left) + paddingRight);
return {scrollLeft: scrollLeft, scrollWidth: scrollWidth};
};
谢谢这是一个有用的选择。。。我很确定这是一个IE11错误;)@莫蒂,没问题。在此期间,我将使用此替代方案。我想解决mistic100/jquery highlighttextarea插件中的一个bug。错误定义位于
var getScrollLeftAndScrollWidth = function (inputElement) {
var range = inputElement.createTextRange();
var inputStyle = window.getComputedStyle(inputElement, undefined);
var paddingLeft = parseFloat(inputStyle.paddingLeft);
var paddingRight = parseFloat(inputStyle.paddingRight);
var rangeRect = range.getBoundingClientRect();
var scrollLeft = inputElement.getBoundingClientRect().left + inputElement.clientLeft + paddingLeft - rangeRect.left;
var scrollWidth = Math.max(inputElement.clientWidth, paddingLeft + (rangeRect.right - rangeRect.left) + paddingRight);
return {scrollLeft: scrollLeft, scrollWidth: scrollWidth};
};