如何从所述标签内部确定<script>标签的位置?</script>

时间:2008-12-30 20:49:34

标签: javascript

我试图弄清楚当前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>

3 个答案:

答案 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>