File size: 3,558 Bytes
81255d7
 
 
 
 
 
 
556031d
35ded2f
076b821
 
 
 
 
35ded2f
 
6c80135
 
 
35ded2f
 
076b821
35ded2f
 
 
48e2549
 
35ded2f
0c155a0
 
 
 
35ded2f
48e2549
35ded2f
48e2549
35ded2f
 
 
48e2549
35ded2f
 
 
3744851
 
48e2549
3744851
35ded2f
 
6c80135
 
 
556031d
 
6c80135
35ded2f
6c80135
 
556031d
6c80135
 
 
 
 
35ded2f
6c80135
 
 
 
 
 
 
556031d
35ded2f
556031d
81255d7
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85

<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>TurboWarp Packager - Convert Scratch projects to HTML, EXE, and more</title><meta name="description" content="Converts Scratch 3, 2, or 1 projects into HTML files, zip archives, or executable programs for Windows, macOS, and Linux. Faster and more customizable than HTMLifier and forkphorus."><style>body[p4-splash-theme="dark"]:not([p4-loaded]) {
        background-color: #111;
        color-scheme: dark;
      }
      .input-for-remembering-project-file {
        display: none;
      }</style></head><body><noscript>This page requires JavaScript.</noscript><input type="file" class="input-for-remembering-project-file" autocomplete="on"><div id="app"></div>
        <script>(async function() {
  if (typeof window.showSaveFilePicker !== 'function') {
    alert('このブラウザは showSaveFilePicker をサポートしていません。最新のGoogle Chromeなどをご利用ください。');
    return;
  }

  const handleBlobLinks = (link) => {
    link.addEventListener('click', async (event) => {
      event.preventDefault(); // デフォルトのリンク動作をキャンセル
      const blobUrl = link.href;

      try {
        const response = await fetch(blobUrl);
        if (!response.ok) throw new Error(`HTTPエラー: ${response.status}`);
        const blob = await response.blob();

        // ファイル保存ダイアログを表示
        const opts = {
          suggestedName: 'file.html', // 固定ファイル名
          types: [
            {
              description: 'HTML File',
              accept: { 'text/html': ['.html'] },
            },
          ],
        };

        const handle = await window.showSaveFilePicker(opts);
        const writable = await handle.createWritable();
        await writable.write(blob);
        await writable.close();

        alert('ファイルが保存されました!');
      } catch (error) {
        console.error('エラーが発生しました:', error);
        alert(
          `ファイルのダウンロード中にエラーが発生しました: ${error.message}\n` +
          `固定ファイル名: file.html`
        );
      }
    });
  };

  const processLinks = () => {
    const links = document.querySelectorAll('a[href^="blob:"]');
    for (const link of links) {
      if (!link.hasAttribute('data-blob-processed')) {
        link.setAttribute('data-blob-processed', 'true'); // 重複処理を防ぐ
        handleBlobLinks(link);
      }
    }
  };

  // 初回処理
  processLinks();

  // DOMの変化を監視
  const observer = new MutationObserver(() => {
    processLinks(); // DOM変化時に再度リンクを処理
  });

  observer.observe(document.body, { childList: true, subtree: true });

  alert('Blobリンクの監視を開始しました!');
})();
</script>
        <script>(function() {
        // This logic is only for the "splash" screen.
        // It's used to prevent a momentary white screen while the page is loading in dark mode.
        var theme = 'system';
        try {
          var local = localStorage.getItem('P4.theme')
          if (typeof local === 'string') theme = local;
        } catch (e) { /* ignore */ }
        if (theme === 'system') theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
        document.body.setAttribute('p4-splash-theme', theme);
      })();</script><script src="js/p4.613592325c8f611b2ae4.js"></script></body></html>