Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.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 如何删除附加的第三方脚本_Javascript_Angular - Fatal编程技术网

Javascript 如何删除附加的第三方脚本

Javascript 如何删除附加的第三方脚本,javascript,angular,Javascript,Angular,我正在组件加载上加载/附加第三方CDN脚本(使用JQuery)。脚本已成功附加到DOM中。但是,不幸的是,如果我转到其他路径并返回到该组件,脚本将不再执行。有人知道如何解决这个问题或者可能出了什么问题吗?或者,当我每次到达此路径并再次加载脚本时,如何删除此脚本 这是我如何将脚本附加到DOM的一个片段 loadScript(name: string) { return new Promise((resolve, reject) => { if (!this.scripts[name]

我正在组件加载上加载/附加第三方CDN脚本(使用JQuery)。脚本已成功附加到DOM中。但是,不幸的是,如果我转到其他路径并返回到该组件,脚本将不再执行。有人知道如何解决这个问题或者可能出了什么问题吗?或者,当我每次到达此路径并再次加载脚本时,如何删除此脚本

这是我如何将脚本附加到DOM的一个片段

  loadScript(name: string) {
return new Promise((resolve, reject) => {
  if (!this.scripts[name].loaded) {
    //load script
    let script = document.createElement("script");
    script.type = "text/javascript";
    script.id = this.scripts[name];
    script.src = this.scripts[name].src;
    script.charset = "UTF-8";
    if (script.readyState) {
      //IE
      script.onreadystatechange = () => {
        if (
          script.readyState === "loaded" ||
          script.readyState === "complete"
        ) {
          script.onreadystatechange = null;
          this.scripts[name].loaded = true;
          resolve({ script: name, loaded: true, status: "Loaded" });
        }
      };
    } else {
      //Others
      script.onload = () => {
        this.scripts[name].loaded = true;
        resolve({ script: name, loaded: true, status: "Loaded" });
      };
    }
    script.onerror = (error: any) =>
      resolve({ script: name, loaded: false, status: "Loaded" });
    document.getElementsByTagName("head")[0].appendChild(script);
  } else {
    resolve({ script: name, loaded: true, status: "Already Loaded" });
  }
});
}
}

要找出遇到此问题的主要原因有点困难,但有些想法将有助于解决此问题

删除脚本

您可以删除组件的
ngondstroy()
事件上的脚本

async
设置为false

正如我所知,默认情况下,
script
标记的
async
属性为true。所以,加载脚本会产生问题。您可以这样设置此属性:

//load script
let script = document.createElement("script");
script.type = "text/javascript";
script.id = this.scripts[name];
script.src = this.scripts[name].src;
script.charset = "UTF-8";
script.async = false; // set async
角度缓存

最后但并非最不重要的一点是,SPA中的缓存会产生问题。就我而言,
jQuery
将缓存JS设置为true。确保代码中没有问题


我想你的问题与这些项目有关。你可以一步一步地检查它们。希望我能帮助您。

要找出遇到此问题的主要原因有点困难,但有些想法将有助于解决此问题

删除脚本

您可以删除组件的
ngondstroy()
事件上的脚本

async
设置为false

正如我所知,默认情况下,
script
标记的
async
属性为true。所以,加载脚本会产生问题。您可以这样设置此属性:

//load script
let script = document.createElement("script");
script.type = "text/javascript";
script.id = this.scripts[name];
script.src = this.scripts[name].src;
script.charset = "UTF-8";
script.async = false; // set async
角度缓存

最后但并非最不重要的一点是,SPA中的缓存会产生问题。就我而言,
jQuery
将缓存JS设置为true。确保代码中没有问题


我想你的问题与这些项目有关。你可以一步一步地检查它们。我希望我能帮助您。

您能否也分享一下您是如何在组件的OnInit上调用loadScript方法的?Hi@Raj在组件的OnInit上调用loadScript?您还可以分享一下您是如何在组件的OnInit上调用loadScript方法的?Hi@Raj在组件的OnInit上调用loadScript