W3Schools网站上发布了一个jQuery测验......
http://www.w3schools.com/quiztest/quiztest.asp?qtest=jQuery
问题#16如下,
在文档加载完成之前,使用哪个jQuery函数来阻止代码运行?
一个。 (文档)$ .load()
B中。 $(文件)。就绪()
℃。 $(体).onload()
我选错了答案A.(他们的官方答案是B。)
我回答说,以为我知道以下内容,
在页面上的一切
document.ready只在加载DOM后才会触发(不一定是所有图像都已加载)
我解释了原始问题的措辞,“文档已完成加载”,包含所有内容(包含所有图像)。毕竟,我认为这就是他们称之为“document.load”的原因。同样,为了使他们的答案正确,你必须得出结论“DOM”相当于“文档”。这似乎不正确,否则为什么称它为“文档对象模型”(DOM)而不仅仅是“文档”?
尽管W3School声称B是正确答案,但究竟什么是正确答案?
谢谢你的想法。
旁注:在my other related question中引用我自己的评论......
“我实际上在jQuery网站上学习了大部分jQuery,并且当我遇到困难时在StackOverflow上搜索。我主要是在W3School上进行测验,因为我正在调查他们对jQuery的”先决条件“认证。我不认为自己是一名jQuery专家,但我很容易在他们的测验中得到95%(19/20)。看到答案中的不正确措辞,我想我会在这里发帖确认我已经怀疑的内容。我对这类认证的看法正在转变。“
修改
我已通知W3Schools这个帖子的存在。
编辑2:
当我回答原始测验问题时,我在考虑$(window).load(),因此我的测验答案明显不正确。我相信这个事实不会让三个多项选择都没有作为正确的答案。请参阅下面的详细答案。
答案 0 :(得分:5)
问题 不明确。
正确答案取决于您对文档的定义。如果是DOM,则为B.如果是整个页面的资产,则为$(window).load(function() { ... })
。
正如你所看到的,这个测验很糟糕。
答案 1 :(得分:2)
来自jQuery API documentation ...
<强>。就绪()强>
说明:指定要执行的功能 在 DOM 完全执行时执行 加载。虽然JavaScript提供了 加载事件以执行代码时a 页面呈现,此事件不会 获得触发,直到所有资产如 图像已被完全接收。 在大多数情况下,可以运行脚本 一旦DOM层次结构完全构建。
从W3C ...
中定义 DOM定义 .load()什么是文档对象模型?
文档对象模型是一个 平台和语言中立 允许程序和的接口 脚本动态访问和 更新内容,结构和 文件的风格。
<强> .load()强>
说明:将事件处理程序绑定到“加载”JavaScript事件。
示例:在网页完整加载时运行功能包括 图形。
$(window).load(function(){
// run code
});
在对此进行研究和深思熟虑之后,我得出结论,鉴于他们的三个选择,问题的措辞是不正确的。当然,基于这种思路,由于测验问题没有正确答案,我原来的答案也是错误的。
最初的W3Schools jQuery测验问题:
使用哪个jQuery函数 在此之前阻止代码运行 文件已完成加载?
现在让我们分析原来的三个答案:
一个。 (文档)$ .load()
这是我最初的答案,但是在StackOverflow上发布这个问题之后,我意识到$(document).load()是我无法解释的有效代码。 $(window).load()是我最初的想法。使用$(window).load(),你将阻止代码在整个窗口加载之前执行,包括它的所有元素,图像等。
A 不能是正确的答案,因为措辞是“document.load”,尽管应该是“window.load”。
B中。 $(文件)。就绪()
这是官方答案,它是有效的jQuery代码。它在DOM准备好但在其他任何内容完成加载之前触发。我认为你不能说“文件”已经完成加载,否则“文件”和“DOM”这两个词具有相同的含义并且可以互换。
B 无法正确答案,因为没有图片和其他资源,页面(文档)尚未完成加载。
℃。 $(体).onload()
C 不能正确答案,因为“onload()”不是jQuery库的一部分。
<强>结论(S):强>
正如问题所示,“在文档加载完成之前,使用了哪个jQuery函数来防止代码运行?”,没有正确答案。 $(window).load()应该是正确的答案,因为它指的是“页面”或“文档”作为一个整体,而不仅仅是DOM。
要接受正式答案,“$(document).ready()”,原始问题应重写如下:“使用哪个jQuery函数在DOM加载完成之前阻止代码运行?“