如何在angular 5+项目的index.html页面中动态添加脚本标签?

时间:2018-10-24 11:13:50

标签: angular typescript

通过获取服务器端响应,可以在其中动态添加任何脚本标签。

1 个答案:

答案 0 :(得分:0)

我不知道您的确切用例。但是有时候我们只需要加载某些工作流中需要的脚本,而不是不必要地下载。

例如 我有一个银行应用程序,仅在少数情况下需要加载付款网关SDK。因此,无论何时执行那部分代码,我当时都使用javascript函数

_loadScript(scriptSrcUrl, onLoadSuccessCallback, onErrorCallback) {
  if (scriptSrcUrl)
    if (document.querySelector('script[src="' + scriptSrcUrl + '"]')) {
      onLoadSuccessCallback();
    } else {
      var a = document.createElement('script');
      a.setAttribute('async', ''),
        (a.src = scriptSrcUrl),
        onLoadSuccessCallback && (a.onload = onLoadSuccessCallback),
        onErrorCallback && (a.onerror = onErrorCallback),
        document.head.appendChild(a);
    }
}

_scriptLoaded(result) {
    if(result) {
        // use the script
    } else {
        // handleError
    }
}


lazyLoadScriptsInDom() {
    this._loadScript(
        "https://checkout.razorpay.com/v1/checkout.js",
        this._scriptLoaded.bind(this, !0),
        this._scriptLoaded.bind(this, !1)
    );
}