javascript - 如何区分动态加载的脚本和普通的 src 脚本

标签 javascript

如何区分使用 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>

最佳答案

添加特定的 HTML5 data-*动态脚本的属性:

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 ,然后以相反的方式检查。

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

关于javascript - 如何区分动态加载的脚本和普通的 src 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15962415/

相关文章:

javascript - dev 文件夹中的 Phaser 3 图像?

javascript - 将 JSON 节点名称设置为变量值

javascript - 仅将数字舍入为 2.5 的因数

javascript - Bootstrap 模式未通过 jquery data-remote-load 触发

javascript - 将 ex-navigation 与 Exponent js 结合使用,如何在用户导航离开时清除选项卡的 StackNavigation?

javascript - 声明 jQuery 变量的官方正确方法是什么?

javascript - 在 Node.js 中加载无 js 的外部文件

javascript - 在 php 中启用内容安全时如何执行从 JQuery Ajax 请求检索的内联脚本

javascript - 使用 jQuery 编辑滚动条

javascript - While循环无法完成的递归示例