Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript dom:直到最后一个<;img>;请求已启动。(原型js)_Javascript_Events_Dom_Prototypejs - Fatal编程技术网

Javascript dom:直到最后一个<;img>;请求已启动。(原型js)

Javascript dom:直到最后一个<;img>;请求已启动。(原型js),javascript,events,dom,prototypejs,Javascript,Events,Dom,Prototypejs,我正在处理一个包含60多个图像的页面,直到启动最后一个图像请求(未完全加载,这是预期的),dom:loaded事件才会触发。在较慢的连接上(使用一些节流阀来模拟),这是非常明显的。dom:loaded事件触发一些东西,这些东西将在页面上启动javascript交互,我希望尽早启动 这似乎不是预期的行为,因为图像标记已经呈现在页面上(其在页面源中)。或者是吗?否,在图像文件完全下载之前,标记不会被浏览器视为完全呈现。是的,这是记录在案的预期行为 如果您想在prototype中使用onDomRead

我正在处理一个包含60多个图像的页面,直到启动最后一个图像请求(未完全加载,这是预期的),dom:loaded事件才会触发。在较慢的连接上(使用一些节流阀来模拟),这是非常明显的。dom:loaded事件触发一些东西,这些东西将在页面上启动javascript交互,我希望尽早启动

这似乎不是预期的行为,因为图像标记已经呈现在页面上(其在页面源中)。或者是吗?

否,在图像文件完全下载之前,
标记不会被浏览器视为完全呈现。是的,这是记录在案的预期行为

如果您想在prototype中使用onDomReady功能,请查看以下脚本:

另一种选择,有些人不喜欢这样说,所以我冒着被否决的风险说这句话,就是把你的脚本放在文档的末尾。Javascript是在遇到时执行的,文档也是以同样的方式构建的,因此文档末尾的一块Javascript意味着脚本可以访问它上面的所有DOM节点


请注意,根据HTML规范,在文档体中使用脚本块是完全有效和正确的,如果这样做,页面将进行验证。事实上,雅虎和谷歌都建议在文档末尾添加脚本块,以缩短页面呈现时间。有些人不知怎的觉得这样做很难看。我以前也有同样的感觉。但美在旁观者的眼中。

Prototype已经有了处理这个问题的工具,即document.observe('dom:loaded',function(){dostuff();}。这就是正在使用的。加载dom后,在加载图像之前,它会在支持浏览器上触发DOMContentLoaded。我想问的是,为什么在启动对最终图像的请求之前,此事件不会触发。它必须与dom树的创建方式有关。不确定,但请查看它看起来的domready脚本就像它在IE中做了一些不同的事情一样。不管怎样,编辑我的帖子给出了另一种方法,如果其他方法都失败的话。那是因为IE没有启动DOMContentLoaded。为IE找出“domready”事件的典型方法是使用
setInterval
doScroll()
call。在DOM准备好之前,这不会起作用。可怕的
doscorl
黑客攻击在某些情况下可能会失败。您正在使用iFrame吗?哪些浏览器正在等待完全加载?