可以插入<脚本>标记可以在不使用JavaScript中的eval的情况下多次运行

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

本文关键字:eval JavaScript 中的 运行 情况下 脚本 lt 插入 gt      更新时间:2024-05-07

我必须使用一个插件,它将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>