为了严格的内容安全策略,将内联javascript初始化逻辑从html中分离出来


Separate inline javascript initialization logic from html for strict Content Security Policy

我想使用一个非常严格的内容安全策略,不允许内联Javascript。我的视图是用php呈现的。整个应用程序所需的所有Javascript逻辑都已经外部连接在一个Javascript文件app.js中。只有特定于页面的初始化逻辑内联在php视图中,例如:

<script>
jQuery(document).ready(function(){
        cebIntranet.home.init();
});
</script>

现在我的问题是如何也外部化内联Javascript初始化逻辑。我可以想到以下方法,但我并不满意。有没有更好的解决方案?推荐的最佳实践有哪些?

  1. 为每个页面创建一个单独的Javascript文件保持初始化逻辑=>我不喜欢请求的想法一个额外的文件,其中至少只有一行。
  2. 将初始化逻辑也移动到app.js文件中并使它们生效依赖于主体id或类。我不喜欢这个主意有一个大的if语句选择正确的初始化逻辑依赖于body类或id。

创建一个具有数组变量和两个成员函数的类,即addJs &

  1. Addjs参数
    • $jsstring => Javascript Code/filename,它将字符串添加到数组变量中。
    • $type =>像1)inline =>这样写内联代码。2) file =>从file中获取代码。
  2. writeJs =>不需要参数

为类创建一个全局可访问的对象,并使用addJS而不是直接将脚本写入file。

当在浏览器上显示html时,无论脚本添加到数组变量中,都需要使用writeJs函数将代码写入文件。