Is the order of onload handler and src set important in a script element?
从这个答案中得出:
You should set the
src attribute after theonload event, f.ex:
1
2 el.onload = function() { //...
el.src = script;You should also append the script to the DOM before attaching the
onload event:
1
2
3 $body.append(el);
el.onload = function() { //...
el.src = script;Remember that you need to check
readystate for IE support. If you are using jQuery, you can also try thegetScript() method: http://api.jquery.com/jQuery.getScript/
我怀疑这是否是问题的正确答案。
那么,设置
1 2 | el.onload = function() { //... el.src = script; |
和
1 2 | el.src = script; el.onload = function() { //... |
我说的对吗?
@ThinkBiggThinksMall是对的。
我要补充的是,这种行为是WebKit特有的,火狐会将事件处理程序排队,所以在这种情况下,这并不重要。
我不确定规格说明是怎么说的,但是imm-ff行为是正确的。
无论如何,由于webkit的行为是这样的,所以应该始终在声明onload事件之后设置src,否则,缓存媒体将在分析脚本之前激发onload事件。
不过,一个解决方法是在声明onload事件之后再次设置SRC:
1 2 3 4 | <img src="someCachedMedia.ext" id="img"/> img.onload = doStuff; img.src = img.src; // force the onload to fire again |
这样,您就可以确定OnLoad事件将启动。另外,应该发出一个请求,因为第一个请求将被缓存。
"el"已经成为你生活中的一部分了吗?如果是这样,当您更改它的onload事件处理程序时,它的内容将不会被评估(因为加载事件已经发生)。
el.onload=函数()/…
如果el尚未添加到页面中,例如,如果您正在构建视图,并且在设置所有内容时将被注入到页面中,那么是的,它的加载事件将在添加到页面中时被激发。
注意"src"中的内容可能取决于"onload"中的内容。