插入的 <script> 标签是否可以多次 运行 而无需在 JavaScript 中使用 eval?

Can an inserted <script> tag be run multiple times without using eval in JavaScript?

我必须使用一个将 js 文件捆绑到 html 文件(小工具)中的插件。对于一个用例,我需要删除并重新实例化一个小工具以 运行 更新代码。

所以说我有 foo.html:

<html>
  <head>
    <script src="foo.js"></script>
  </head>
  <body>...</body>
</html>

foo.js 哪个文件被注入到我实际文档的头部:

alert("hello");

问题是我只能动态缓存 html 文件并将我的小工具声明为 foo.html?x=123,但我之后的 JS 文件仍将是 foo.js,因此浏览器将不重运行吧。

问题:
一旦 <script> 标签被插入到文档中并且 运行,有没有办法在不使用模块加载器或 eval 的情况下再次 运行 它?

谢谢!

您可以将您的代码包装在函数中的 <script> 标记中,然后调用您的函数。这将允许您多次调用您的代码。像这样:

<script>
    function loaded(){
         // JavaScript here
    }
    loaded();
</script>
</body>