Chrome(以及浏览本地文件时的 IE)为 textarea 元素的 clientHeight 提供了一个不正确的初始值。如何让 IE 和 Chrome 提供正确的值? ( Problem demo'ed here )
我正在通过 CSS 固定/绝对定位设置 textarea 的位置和大小。然后我通过 jQuery 检查 clientHeight 的值。
该问题不会一直发生,但始终可以重现。具体需要具备以下条件:

  • 使用 Chrome (5.0)。 (如果文件是从本地计算机打开的,也是 IE (8.0)。)
  • 浏览器窗口最大化。
  • jQuery 被内联包含(相对于作为外部文件链接)
  • 浏览器启动后页面未加载。
  • 我的应用程序尚未处理任何命令。
  • 变量 paddingLines 是根据 clientHeight 动态确定的。 (每次设置为 50 是一种解决方法。)

  • 我需要准确的 clientHeight 和 scrollHeight 值,因为我使用这些属性来确定将 textarea scrollHeight“对齐”到的位置,以便最后一个输出从文本区域的第一行开始。实际上,如果属性在调用之间始终不准确,它仍然可以工作。不幸的是,在处理第一个命令时,不准确的属性会被调整为正确的值。
    我试图在演示 here 中隔离问题。当我尝试制作一个更简单的样本时,问题并没有始终如一地重现。我认为存在一些时间和/或浏览器优化问题,因为以下变通办法使问题消失:
  • 每次将变量 paddingLines 设置为 50(而不是根据 clientHeight 动态计算)
  • 包含 jQuery 作为外部文件(而不是内联文件)
  • 在 textarea 初始化之前添加一个短延迟(短至 2 毫秒)。
  • 从服务器在 IE 中加载应用程序(与从本地计算机打开)

  • 但是,这些变通办法只是杂乱无章,我更愿意找到问题的真正原因/解决方案。虽然这是一个很小的审美问题,但我希望更深入地了解 Html DOM、CSS 和 jQuery 如何在不同浏览器中工作。我的代码有问题吗?
    笔记:
  • Chrome 属性不准确的原因似乎与 IE 的
  • 不同
  • Chrome 不准确的 clientHeight 似乎是基于浏览器的非最大化大小。
  • IE 的不准确的 clientHeight 可能会受到有关不安全脚本的信息栏警告的影响。
  • 最佳答案

    我遇到过同样的问题。我用自适应设计得到了错误的 clientHeight。
    尝试在 $(window).load(); 而不是 $(document).ready(); 上获取 clientHeight

    它对我有用!

    关于jquery - 使用 jQuery 为什么 IE/Chrome 最初为 textarea 提供不正确的 clientHeight 和 scrollHeight?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3374877/

    10-11 11:35