Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何加载带有附加脚本的AngularJS文件?(CSP严格的动态要求)_Javascript_Angularjs_Loading_Content Security Policy - Fatal编程技术网

Javascript 如何加载带有附加脚本的AngularJS文件?(CSP严格的动态要求)

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"&

我在本地主持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>
<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>