Javascript 如何加载带有附加脚本的AngularJS文件?(CSP严格的动态要求)
我在本地主持AngularJS。如果我在结束body标记之前以这种方式加载JS文件,它会起作用:Javascript 如何加载带有附加脚本的AngularJS文件?(CSP严格的动态要求),javascript,angularjs,loading,content-security-policy,Javascript,Angularjs,Loading,Content Security Policy,我在本地主持AngularJS。如果我在结束body标记之前以这种方式加载JS文件,它会起作用: <script src="javascript/angular.min.js"></script> <script src="javascript/angular.min.js.map" type="application/json"></script> <script src="javascript/angular-route.min.js"&
<script src="javascript/angular.min.js"></script>
<script src="javascript/angular.min.js.map" type="application/json"></script>
<script src="javascript/angular-route.min.js"></script>
<script src="javascript/angular-route.min.js.map" type="application/json"></script>
为了支持新的“严格动态”CSP,我需要在单个无源脚本中加载所有脚本(即,页面上的脚本元素不允许使用“src”;脚本本身必须包含在脚本标记中)。对于除AngularJS之外的所有脚本,我的脚本加载例程都可以正常工作。如果我尝试以这种方式加载它,它将失败,并在控制台中显示错误消息(“无法读取未定义的'module'属性”,等等):
window.onload=函数(){
var loadScript=函数(url,类型){
var script=document.createElement('script');
script.src=url;
如果(类型=='application/json'){
script.type=type;
}
document.body.appendChild(脚本);
};
loadScript('javascript/angular.min.js','');
loadScript('javascript/angular.min.js.map','application/json');
loadScript('javascript/angular-route.min.js','');
loadScript('javascript/angular-route.min.js.map','application/json');
};
如果例程不限于window.onload事件,此操作也会失败:
<script>
var loadScript = function (url, type) {
var script = document.createElement('script');
script.src = url;
if (type === 'application/json') {
script.type = type;
}
document.body.appendChild(script);
};
loadScript('javascript/angular.min.js', '');
loadScript('javascript/angular.min.js.map', 'application/json');
loadScript('javascript/angular-route.min.js', '');
loadScript('javascript/angular-route.min.js.map', 'application/json');
</script>
var loadScript=函数(url,类型){
var script=document.createElement('script');
script.src=url;
如果(类型=='application/json'){
script.type=type;
}
document.body.appendChild(脚本);
};
loadScript('javascript/angular.min.js','');
loadScript('javascript/angular.min.js.map','application/json');
loadScript('javascript/angular-route.min.js','');
loadScript('javascript/angular-route.min.js.map','application/json');
…如果我从本地主机或谷歌的Ajax CDN获取文件,这没有什么区别
有什么线索可以解决这个问题吗?使用“严格动态”CSP,我别无选择,只能使用上述技术加载AngularJS框架文件
<script>
var loadScript = function (url, type) {
var script = document.createElement('script');
script.src = url;
if (type === 'application/json') {
script.type = type;
}
document.body.appendChild(script);
};
loadScript('javascript/angular.min.js', '');
loadScript('javascript/angular.min.js.map', 'application/json');
loadScript('javascript/angular-route.min.js', '');
loadScript('javascript/angular-route.min.js.map', 'application/json');
</script>