无法使用angular4和Javascript动态包含javascript文件

时间:2018-03-14 12:07:10

标签: javascript angular

我无法在angular4提交方法中动态包含一个javascript文件。我在下面解释我的代码。

onTextFormSubmit(){
    this.processValidation = true;
    if (this.textForm.invalid) {
      return;
    } 
    let urlValue = this.textForm.value;
    let url = urlValue.url;
      console.log('hello',url);
      var script = document.createElement("SCRIPT");
      script.setAttribute("type", "text/javascript");
      script.setAttribute("src", url);
      script.setAttribute('integrity', 'sha384-tEgmOghGBnPJQ3h63qzTE8V69SDVkIIyQeOFDfsG+AWJqA/UfZMmyQcXQVunl3wT');
      script.setAttribute('crossorigin','anonymous');
      document.getElementsByTagName("head")[0].appendChild(script);
  }

此处url参数来自表单提交,类似https://code.jquery.com/jquery-2.2.4.min.js这个并且我动态地将其包含在内但是在我执行view page source后提交并且搜索该文件不在{ {1}}标签,我没有发现那是我的问题。我需要动态地包含这个文件。

1 个答案:

答案 0 :(得分:0)

我在我的环境中对它进行了测试,但也失败了。 我发现了以下错误:

  

无法在“完整性”中找到有效的摘要'属性   资源' https://code.jquery.com/jquery-2.2.4.min.js'用计算机   SHA-256完整性' BbhdlvQf / xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44 ='。该   资源已被阻止。

经过一番搜索,我发现这个git issue解决了它。

只需在脚本中添加以下属性:

 script.setAttribute('integrity','');

修改

如果它还没有工作,请试试这个:

script.setAttribute('integrity','sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=');
script.setAttribute('crossorigin','anonymous');