async function loadUltraviolet() { const uvFiles = { bundle: "https://cdn.jsdelivr.net", config: "https://cdn.jsdelivr.net", sw: "https://cdn.jsdelivr.net" }; try { // 1. 制御用のスクリプトを動的に読み込む await import(uvFiles.bundle); // 2. Service Workerを登録(ここがISGC回避の肝) if ('serviceWorker' in navigator) { const registration = await navigator.serviceWorker.register(uvFiles.sw, { scope: '/uv/' // スコープの設定 }); } // 3. 表示用のiframeを生成 content.innerHTML = `

Ultraviolet Proxy

`; // 入力イベントの設定 const input = document.getElementById('uv-address'); input.addEventListener('keydown', async (e) => { if (e.key === 'Enter') { const url = input.value; // UVのエンコード処理(__uv_encodeはbundleに含まれる) const encodedUrl = "/uv/" + __uv_encode(url); document.getElementById('uv-iframe').src = encodedUrl; } }); } catch (err) { content.innerHTML = `

UVの読み込みに失敗: ${err.message}

`; } }