mirror of
https://gitlab.com/PronounsPage/PronounsPage.git
synced 2025-09-26 06:23:35 -04:00
(sentry) add rejection error to $loadScript for better troubleshooting
This commit is contained in:
parent
0c2a5c7be1
commit
2366ccb2af
@ -79,31 +79,27 @@ export default ({ app, store }: { app: Vue, store: Store<RootState> }): void =>
|
|||||||
store.commit('showTranslationMode');
|
store.commit('showTranslationMode');
|
||||||
}
|
}
|
||||||
|
|
||||||
Vue.prototype.$loadScript = (name: string, src: string, nonce: string | undefined = undefined) => {
|
Vue.prototype.$loadScript = (name: string, src: string, nonce: string | undefined = undefined): Promise<void> => {
|
||||||
if (!process.client || document.querySelectorAll(`script.${name}-script`).length > 0) {
|
if (!process.client || document.querySelectorAll(`script.${name}-script`).length > 0) {
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
resolve(null);
|
resolve();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
let resolveFn: ((this: GlobalEventHandlers, event: Event) => any) | null = null;
|
return new Promise((resolve, reject) => {
|
||||||
let rejectFn: OnErrorEventHandler = null;
|
const script = document.createElement('script');
|
||||||
const promise = new Promise((resolve, reject) => {
|
script.setAttribute('src', src);
|
||||||
resolveFn = resolve;
|
|
||||||
rejectFn = reject;
|
|
||||||
});
|
|
||||||
|
|
||||||
const s = document.createElement('script');
|
|
||||||
s.setAttribute('src', src);
|
|
||||||
if (nonce) {
|
if (nonce) {
|
||||||
s.setAttribute('nonce', nonce);
|
script.setAttribute('nonce', nonce);
|
||||||
}
|
}
|
||||||
s.classList.add(`${name}-script`);
|
script.classList.add(`${name}-script`);
|
||||||
s.onload = resolveFn;
|
script.crossOrigin = 'true';
|
||||||
s.onerror = rejectFn;
|
script.addEventListener('load', () => resolve());
|
||||||
document.body.appendChild(s);
|
script.addEventListener('error', (event) => {
|
||||||
|
reject(new Error(`failed to load ${name} (${src}): ${typeof event === 'string' ? event : event.type}`));
|
||||||
return promise;
|
});
|
||||||
|
document.body.appendChild(script);
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user