我没有测试这个解决方案
这是对@RamiAssi 的回答,因为他的解决方案正朝着正确的方向发展,但不会在每种情况下都可以使用,而且问题是关于延迟加载和加载我的主应用程序时不加载
如果您想加载脚本而不像接受的答案那样做,我建议您按照以下方式进行。
加载这个ngOnInit()
你想要的,这isScriptLoaded
将确保你不会多次加载同一个脚本
然后,在加载 webflow html 之前等待从脚本加载
export class AnyComponent implements OnInit {
loading = true
ngOnInit(): void {
if(this.loadScript('assets/theme/js/jquery-3.5.1.min.js') && this.loadScript('assets/theme/js/workflow.js'))
this.loading = false
}
<ng-container *ngIf="!loading">
<!-- My webflow stuff -->
</ng-container>
/**
*
* @param target url to be loaded
* @returns true when loaded
*/
export const loadScript = (target: string): boolean => {
if (!isScriptLoaded(target)) {
const tag = document.createElement('script')
tag.src = target
document.body.appendChild(tag)
return true
}
return true
}
export const isScriptLoaded = (target: string): boolean => {
return document.querySelector('script[src="' + target + '"]') ? true : false
}
优化点
您可以制作一个加载多个脚本的方法