0

我最近注意到有时 domready 和 window.load 不起作用。这就像进入页面时随机工作,或者刷新。

说我有:

$(function(){
  $('.hide').hide();
  // disable html5 native validation to let jquery handle 
  $('form').attr('novalidate','novalidate');
});

$(window).load(function(){
  $('.input').click(function(){
      $(this).animate({opacity:0.8});
  }).blur(function(){
      $(this).animate({opacity:1});
  });
});

有时,当我加载页面时,元素没有被隐藏,有时是,输入字段会动画,有时不会,两者不一定会一起失败。如果我刷新页面几次,它会工作。

我一直认为 domready 会在 dom 准备好后立即执行,而 window.load 会等到页面上的所有内容都准备好了吗?或者这是来自 HTML5 的更多错误?

问题是:我是错过了什么还是只是误解了什么?

编辑:特别是铬。我在 Ubuntu 上,所以如果它是一个铬错误,我不会感到惊讶。

4

1 回答 1

0

请注意,如果您有一个非常复杂的 html 结构,它可能会延迟 dom 准备就绪的时间。浏览器可能会尝试尽可能快地渲染页面,并且对于一个非常复杂的页面,渲染可能会开始并且会触发 domready 事件,但是浏览器会在您设置的特定代码之前快速渲染内容up 被触发。

jQuery domready 中的一个块尽可能快地发生,但是如果你说:

setTimeout(function(){ $().ready(function(){alert('finally');});}, 9000);

“尽可能快”仍然会受到代码出现位置的限制,在这种情况下是在 9 秒超时之后。

于 2012-01-27T20:37:27.923 回答