javascript - 行为发生奇怪的变化 - Windows 8.1 中的 <textarea>

标签 javascript html css windows-8 windows-8.1

我们的应用程序是适用于 Windows 8 的 HTML5/WinJS Google Talk 应用程序。我们有一个用于聊天输入的文本区域。我们有一个最大高度,并且我们以编程方式将高度设置为最大。

Normal height

Max height

因此,在达到该最大值后,它会将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)

这是绑定(bind)到 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。这是我们对此的巧妙解决方案。 8.1 中似乎高了 8px。然而(在 8.1 中)当我们清除文本字段(Ctrl-A 然后按 Backspace)时,它不会重置文本区域的高度,但在 Windows 8 中却如此。

我认为我们在 JavaScript 方面的处理方式是错误的,并且完全愿意接受建议。

如果我可以提供更多信息,请告诉我!

最佳答案

我注意到 Windows 8 的 javascript 可能会导致 css 之间出现很多冲突。我正在开发一个应用程序,其中一半的时间我只是尝试修复由冲突的 css 或全局变量引起的视觉错误。您是否使用各种 css 文件并在它们之间声明相似的名称? (例如,假设您有 file1.css 和 .inputField 在其中声明,并且在此页面中您有 file2.css 和 .inputField 声明有不同的属性)

关于javascript - 行为发生奇怪的变化 - Windows 8.1 中的 &lt;textarea&gt;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17355711/

相关文章:

javascript - 使用 requireJS 时如何监听全局事件

javascript - 如何将全日历事件限制为只有一天?

html - 使用 CSS 链接到顶部和底部

javascript - 我如何将字母与 JavaScript 中的单词进行比较?

javascript - 如何使用ajax get方法发送登录名和密码?

html - 修复了对齐的表头问题

javascript - 当所有内容都已完成下载时检测到

javascript - JQuery自动改变div的高度

css - 仅当 CSS 元素位于某个类内时,才使用 ID 来定位 CSS 元素是否有效?

android - 首页英雄背景图像在移动设备上缩放不当