install-CDN
cdnjsなどからscrapboxにscriptを読み込むための関数
script.js_oldexport function installCDN({id,src, module = false} = {}) {
const oldScript = document.getElementById(id);
oldScript?.parentNode.removeChild(oldScript);
const script = document.createElement("script");
script.src = src;
script.id = id;
if (module) {script.type = 'module';}
document.head.appendChild(script);
}
load
イベントを使ったらsetTimeoutの代わりにawaitでいけるかな?
こんなイベントあったんだ
便利じゃん!
script.jsexport const installCDN = ({id, src, module = false} = {}) => new Promise((resolve, reject) => {
const oldScript = document.getElementById(id);
oldScript?.parentNode.removeChild(oldScript);
const script = document.createElement("script");
script.addEventListener('load', () => resolve());
script.addEventListener('error', ev => reject(ev));
script.src = src;
script.id = id;
if (module) { script.type = 'module'; }
document.head.appendChild(script);
});
試してみたけどCSPに引っかかった
これもfirefoxとかchromeでの挙動の違いかな?
引っかかったのは
scrapbox.io/files
のJSファイルですか?
その場合は、おそらく script-src
で制限されているのだと思います
cdnjs.cloudflare.com
はChromeでも引っかからないはずです
これだとできた!
が失敗したのは
cdn.jsdelivr.net
scrapbox自体が利用してるcdnと同じものを使えば制限に引っかからないということか
そういうことですね