【发布时间】:2012-01-28 04:37:27
【问题描述】:
我最近注意到有时 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 的更多错误?
问题是:我是错过了什么还是只是误解了什么?
编辑:特别是 Chromium。我在 Ubuntu 上,所以如果它是一个 chromium 错误,我不会感到惊讶。
【问题讨论】:
-
我知道这不能回答你的问题,但我不知道你为什么在一个地方使用
$(function(){...(domready) 而在另一个地方使用$(window).load...(window load)。难道你不能用 domready 实现同样的事情,因为你不等待图像加载? -
blue是做什么的?它是一个自定义的 jQuery 函数吗? -
@marcosfromero:我确实在某些页面上加载了图像,但这是一个简单的示例,用于演示我的设置以及是否是 HTML5 的问题,或者只是铬本身有这个问题。另外,你说的蓝色是什么?我不记得我的代码中的任何地方都是蓝色的。
-
为什么会是 HTML5 的错误?唯一可靠地支持加载事件的元素是 body 和 iframe。 jQuery 根据它认为可用的内容孵化自己的 DOM 就绪事件。我不会把两者混在一起。特别是,不要依赖 HTML5 - 它不是标准并且支持是混合的。在重要的事情上坚持使用 HTML 4.01 和 DOM 0/1/2/3。谨慎使用 HTML5 功能,进行功能测试和适当的回退。不是每个人都在使用最新的 Chrome 浏览器或其他什么。
-
@RobG:我想你是对的。我去开始采摘扩展的,发现谷歌语音插件正在搞乱domready和window.load。如果插件已登录,它会尝试在页面上查找干扰 jquery domready 的电话号码。
标签: javascript jquery domready