1

如何区分使用 src 属性包含的动态加载脚本和普通脚本?例如

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
  <script src="static.js" type="text/javascript"></script>
  <script type="text/javascript">
  document.getElementsByTagName('head')[0].appendChild(document.createElement('script').src = 'dynamic.js');
  </script>
</head>
<body>
<script type="text/javascript">
// I want to distinguish dynamic.js and static.js script tags
</script>
</body>
</html>
4

1 回答 1

3

向动态脚本添加特定的 HTML5data-*属性:

var script = document.createElement("script");
script.setAttribute("data-is-dynamic", "true");
script.id = "script1";
script.src = "dynamic.js";
document.getElementsByTagName('head')[0].appendChild(script);

获取<head>元素的一个选项是使用document.head,尽管旧浏览器不支持它。这是 MDN 文档 - https://developer.mozilla.org/en-US/docs/DOM/document.head

然后稍后区分,使用:

var someScript = document.getElementById("script1"); // or any script tag you want to analyze
if (someScript.getAttribute("data-is-dynamic") === "true") {
    // is dynamic
} else {
    // is static
}

当然,同时,您可以在静态脚本标签上设置一个属性,例如data-is-static,然后以相反的方式进行检查。

这允许您在稍后可以检索的脚本标签上有效地设置“标志”。

于 2013-04-12T03:14:12.287 回答