【发布时间】:2013-07-09 00:08:41
【问题描述】:
我们的应用程序是适用于 Windows 8 的 HTML5/WinJS Google Talk 应用程序。我们有一个用于聊天输入的文本区域。我们有一个最大高度,我们以编程方式将高度设置为最大。
所以在达到最大值后,它会将 overflowY 设置为滚动。这一直很好。但是,当我们在 Windows 8.1 上测试我们的应用程序时,它出现了问题。每当我们输入oninput 时,每输入一个字符,高度就会增加 3px。因此,当您键入时,框会不断变大,即使它只有 5 个字母并且不需要换行。由于某种原因,scrollHeight 或高度没有正确更新。
<textarea class="inputField" id="inputField" placeholder="Type your message"></textarea>
onMessageInput: function (e) {
e.target.style.height = (e.target.scrollHeight - 5) + "px";
if (e.target.clientHeight >= 350) {
e.target.style.overflowY = "scroll";
}
else {
e.target.style.overflowY = "hidden";
}
}.bind(this)
即绑定到oninput的函数。我们说如果客户端高度超过 350px,则设置为滚动。
.inputField {
-ms-grid-row: 2;
-ms-grid-column: 2;
font-size: 19px;
height: 30px;
min-height: 30px;
max-height: 350px;
overflow: hidden;
}
我们做了“- 5”,因为出于某种原因,scrollHeight 似乎总是大 5px。这是我们对此的 hacky 解决方案。它似乎在 8.1 中高出 8px。但是(在 8.1 中)当我们清除文本字段时(Ctrl-A 然后按 Backspace),它不会重置文本区域的高度,但在 Windows 8 中会这样做。
我认为我们在 JavaScript 方面的做法是错误的,并且完全愿意接受建议。
如果我能提供更多信息,请告诉我!
【问题讨论】:
标签: javascript html css windows-8 windows-8.1