【问题标题】:jQuery - $(document).ready not readyjQuery - $(document).ready 没有准备好
【发布时间】:2015-08-05 16:30:30
【问题描述】:

我在 Firefox 移动版中遇到了这个奇怪的问题。其他浏览器没有这个问题。

$(document).ready(function(){ alert( $(window).height()); });

这总是打印错误的窗口高度。它确实是 1544px,但警报显示为 480px。现在,如果我在当前警报之前添加一个简单的警报:

$(document).ready(function(){ alert("wait");  alert($(window).height()); });

然后突然给出正确的高度。因此,我认为 onready 事件在文档实际准备好之前触发,第一个警报等待,给文档足够的时间准备好。有谁知道如何通过这个?

编辑: $(window).load 有同样的问题

EDIT2:我越研究这个,它就越奇怪。似乎在 jquery 文件完全下载之前触发了 window onload 事件。这是第一个测试:http://visore.org/test/test1.html 在访问页面之前,您必须清除缓存数据(菜单 -> 设置 -> 隐私 -> 立即清除)。您会注意到,如果您继续大量重新加载页面,有时会给出正确的高度(通常只有清除缓存后的第一次访问会显示不正确的高度)。这是带有 2 个警报的第二个测试:http://visore.org/test/test2.html 这个总是给出正确的高度。同样,问题仅出现在 Firefox Android 移动版上。

【问题讨论】:

  • 那篇文章没有任何效果。注意,这只是移动版火狐,其他浏览器都可以。
  • 它应该可以工作。您能否提供复制您的问题的简约示例?

标签: javascript jquery html firefox


【解决方案1】:

$(document).ready 在页面准备好被 jQuery 操作时触发。 你应该使用:

$( window ).load(function() {
      alert( $(window).height());
});

【讨论】:

  • 哦,忘了说,$(window).load 也有同样的问题。