Javascript 引用脚本容器元素?

Javascript 引用脚本容器元素?,javascript,dom,Javascript,Dom,我想知道是否有办法获得包含脚本的DOM元素的句柄。如果我有: <script type="text/javascript> var x = ?; </script> 没有真正安全的方法 最接近的方法是使用getElementsByTagName获取所有脚本,获取其长度,获取最后一个脚本元素,然后从那里开始工作 如果脚本被延迟,或者脚本已在另一个脚本元素之前动态添加到页面,则此操作可能会失败。您可以在脚本元素中包含一些标记文本,然后(与David所说的类似),您可以循环通

我想知道是否有办法获得包含脚本的DOM元素的句柄。如果我有:

<script type="text/javascript> var x = ?; </script>

没有真正安全的方法

最接近的方法是使用
getElementsByTagName
获取所有脚本,获取其长度,获取最后一个脚本元素,然后从那里开始工作


如果脚本被延迟,或者脚本已在另一个脚本元素之前动态添加到页面,则此操作可能会失败。

您可以在脚本元素中包含一些标记文本,然后(与David所说的类似),您可以循环通过DOM中的所有
脚本
元素(使用
getElementsByTagName
或库中可能具有的任何功能,如果您正在使用的话)。这应该可以可靠地找到元素。看起来像这样():


您试图解决的实际问题是什么?例如,如果您认为可以删除
script
元素以从文档中删除该脚本,则该操作不起作用。
script
标记中的JavaScript一旦执行,就会加载到JavaScript运行时内存区域,并且不会受到
的更改的影响script
tag(包括完全删除它)。我确信获取
script
标记还有其他用途,只要问一个问题…:-)
<body>
  <script id='first' type='text/javascript'>
    (function() {
      var x = "MARKER:first";
    })();
  </script>
  <script id='second' type='text/javascript'>
    (function() {
      var x = "MARKER:second";
    })();
  </script>
  <script id='third' type='text/javascript'>
    (function() {
      var x = "MARKER:third";
    })();
  </script>
  <script id='last' type='text/javascript'>
    (function() {
      var scripts, index, script;

      scripts = document.getElementsByTagName("script");
      for (index = 0; index < scripts.length; ++index) {
        script = scripts[index];
        if (script.innerHTML.indexOf("MARKER:second") >= 0
           && script.id !== "last") {
          display("Found MARKER:second in script tag #" + script.id);
        }
      }

      function display(msg) {
        var p = document.createElement('p');
        p.innerHTML = msg;
        document.body.appendChild(p);
      }
    })();
  </script>
</body>
if (script.innerHTML.indexOf("MARKER:" + "second") >= 0) {
  display("Found MARKER:" + "second in script tag #" + script.id);
}