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