gpt4 book ai didi

angular - 从 Angular 组件动态加载外部 javascript 文件

转载 作者:太空狗 更新时间:2023-10-29 16:48:30 31 4
gpt4 key购买 nike

我正在使用 Angular 4 和 CLI 创建一个 Angular 应用程序。我正在尝试将 SkyScanner 搜索小部件添加到我的组件之一。

Skyscanner Widget Example

部分实现需要添加新的外部脚本:

<script src="https://widgets.skyscanner.net/widget-server/js/loader.js" async></script>

我不确定引用此文件的正确方法。如果我将脚本添加到我的 index.html 文件中,则除非执行整页刷新,否则不会加载小部件。我假设脚本会尝试在加载时操作 DOM,并且脚本运行时元素不存在。

仅当加载包含 Skyscanner 小部件的组件时才加载脚本的正确方法是什么?

最佳答案

尝试在组件加载时加载外部 JavaScript,如下所示:

loadAPI: Promise<any>;

constructor() {
this.loadAPI = new Promise((resolve) => {
this.loadScript();
resolve(true);
});
}

public loadScript() {
var isFound = false;
var scripts = document.getElementsByTagName("script")
for (var i = 0; i < scripts.length; ++i) {
if (scripts[i].getAttribute('src') != null && scripts[i].getAttribute('src').includes("loader")) {
isFound = true;
}
}

if (!isFound) {
var dynamicScripts = ["https://widgets.skyscanner.net/widget-server/js/loader.js"];

for (var i = 0; i < dynamicScripts.length; i++) {
let node = document.createElement('script');
node.src = dynamicScripts [i];
node.type = 'text/javascript';
node.async = false;
node.charset = 'utf-8';
document.getElementsByTagName('head')[0].appendChild(node);
}

}
}

关于angular - 从 Angular 组件动态加载外部 javascript 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44204417/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com