Мне нужно сообщить компоненту, что файл сценария завершил загрузку.
Моя идея сделать это - использовать событие onload элемента для отправки события.С другой стороны, служба зарегистрирует список событий для этого события и будет ждать, пока клиенты зарегистрируют себя в наблюдаемой, которая будет уведомлять о наступлении события.
Я пробовал это, но безуспешно.Кажется, событие не отправлено.В консоли нет ошибок.
Что я сейчас делаю, так это:
index.html:
<script>
function loadFinish() {
onLoadFinish = new CustomEvent('onLoadFinish', {
detail: { },
bubbles: true,
cancelable: false
});
window.dispatchEvent(onLoadFinish);
}
</script>
<script src="opencv.js" onload="loadFinish();" type="text/javascript">
Этот loadFinish вызван, но я не знаю, еслиdispatchEvent работает ...
Служба:
export class JsLoadService {
private subjectJsLoad = new Subject<any>();
constructor() {
window.addEventListener('onJSLoadFinish', (event) => {
console.log("notifying...."); // this never show up in the console.
this.subjectJsLoad.next((event as any).detail)
})
}
onJsLoadFinish():Observable<any> {
return this.subjectJsLoad.asObservable();
}
}
Компонент:
ngOnInit(): void {
this.jsLoadService.onJsLoadFinish().subscribe( data => {
// also never called...
console.log("onJsLoadFinish");
});
}
Возможно, WebView вмешивается в события объекта окна, но яне уверен, я новичок в Ionic.Любая помощь будет принята с благодарностью.