2010-05-07 58 views
5

当站点为您提供一些JavaScript,并将其粘贴到网页中以在该位置插入内容时,脚本如何确定其在DOM中的当前位置?不使用document.write?在<script>标记位置插入元素

感谢,

尼克

+1

你有没有一个正在完成的地方的例子? – 2010-05-07 15:15:30

回答

5

在脚本包含的时候,页面中的最后一个<script>将是当前的;该页面的其余部分尚未被解析。所以:

<script type="text/javascript"> 
    var scripts= document.getElementsByTagName('script'); 
    var this_script= scripts[scripts.length-1]; 

    // Something that happens later... 
    // 
    setTimeout(function() { 
     var div= document.createElement('div'); 
     div.appendChild(document.createTextNode('Hello!')); 
     this_script.parentNode.insertBefore(div, this_script); 
    }, 5000); 
</script> 

这个只要成立的脚本标签不使用defer,或HTML5的async

+0

没有意识到它会以这种方式工作,但非常有意义,谢谢! – 2010-05-07 16:29:01

0

我不明白为什么这样的脚本会关心他们在DOM的位置,但我想这是可能确定。也许可以使用类似document.scripts开始搜索。

+0

我没有看到Mozilla参考文献中的document.scripts: https://developer.mozilla.org/zh/DOM/document 所以我猜这是一个IE浏览器的东西?可能是错误的,但我正在运行Chrome,不想检查! :)虽然谢谢。 – 2010-05-07 16:28:26

+0

这是来自IE的扩展,也可以在WebKit和Opera上找到。虽然它不会给你任何'getElementsByTagName'还没有做的事情,但它从来没有真正被使用过。 – bobince 2010-05-07 22:31:37