什么时候合成的javascript元素被执行?

时间:2012-05-07 02:28:02

标签: javascript dom

鉴于以下一点javascript,在页面呈现的什么时候执行这个?

尝试使用它表明,只要设置了type属性,就会执行脚本标记。实际情况如此吗?或者,一旦整个页面下载并呈现,它是否会被执行?

在DOM中的哪个位置,一旦声明N就会掉落?在开始,中间还是结束?

N = document.createElement('script');
N.setAttribute('src', 'http://localhost/traffic.php' +
    '?_Cookie=' + escape( document.cookie ) +
    '&_Referrer=' + escape( document.referrer ) +
    '&_Href=' + escape( window.location.href ) );
N.setAttribute('type', 'text/javascript' ); 

额外信息

原始剧本

_Noose = document.getElementById('Noose');

开头和

O = _Noose.parentNode.replaceChild( N, _Noose );

最后。

如果此脚本执行的HTML页面没有id为“Noose”的元素,则_Noose计算为null。脚本会失败还是成功?它似乎成功了。

2 个答案:

答案 0 :(得分:1)

团结答案。

如果执行了你的意思是客户端计算机上的页面运行脚本元素链接的url上的代码,那么你的示例代码就不会执行。脚本标记在手动附加到DOM之前不会执行。这也会回答它的附加位置(无论你放在哪里),以及它执行的上下文(你追加它的窗口)。

如果您询问浏览器何时请求您设置为脚本源的URL,则在设置后请求它,但在脚本元素附加到DOM之前它不会对获取的代码执行任何操作。如果在设置类型之后看起来像是在加载url,那是因为浏览器中的每个页面都是单线程的 - 浏览器必须先完成代码执行才能检查其队列并意识到它应该请求脚本网址。 (这也是你永远不想在文档头部执行javascript的原因。)

答案 1 :(得分:1)

以下是使用此基本技术异步加载脚本的一些其他信息。

http://unixpapa.com/js/dyna.html

您可以使用Chrome或Firebug中的开发者控制台查看请求的发布时间。在新脚本标记附加到DOM之前,它不会下载/执行脚本。