我试图弄清楚当前javascript正在运行的脚本标记的位置。真正发生的是我需要从里面确定一个src'd,动态插入的javascript文件在DOM中的位置。这些是动态生成的标签;代码段:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>where am i?</title>
<script type="text/javascript" charset="utf-8">
function byId(id) {
return document.getElementById(id);
}
function create_script(el, code) {
var script = document.createElement("script");
script.type = "text/javascript";
script.text = code;
el.appendChild(script);
}
</script>
</head>
<body>
<div id="find_me_please"></div>
<script>
create_script(byId("find_me_please"), "alert('where is this code located?');");
</script>
</body>
</html>
答案 0 :(得分:5)
您可以为脚本指定一个id标记like this dude does ...
答案 1 :(得分:3)
您可以使用document.write创建虚拟DOM对象并使用parentNode进行转义。例如:
<script>
(function(r) {
document.write('<span id="'+r+'"></span>');
window.setTimeout(function() {
var here_i_am = document.getElementById(r).parentNode;
... continue processing here ...
});
})('id_' + (Math.random()+'').replace('.','_'));
</script>
这假设您实际上无法控制<script>
标记本身,例如当它在<script src="where_am_i.js"></script>
内时 - 如果您做控制<script>
1}}标记,只需在其上添加ID,如:
<script id="here_i_am">...</script>
答案 2 :(得分:0)
如果您只是在页面加载时运行此功能
<script>
var allScripts = document.getElementsByTagName('script');
var thisScript = allScripts[allScripts.length];
alert(thisScript);
</script>