スクリーンショットをクリップボードに入れる

    
      
  • /*
     * @title スクリーンショットをクリップボードに入れる
     * @description 現在閲覧しているサイトのスクリーンショットをクリップボードに入れます
     * @include http://*
     * @license MIT License
     * @require 
     */
    
    javascript:(async()=>{
      // html2canvas を読み込む(無ければCDNから)
      if(!window.html2canvas){
        await new Promise((res,rej)=>{
          const s=document.createElement('script');
          s.src='https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js';
          s.onload=res; s.onerror=rej; document.head.appendChild(s);
        }).catch(e=>{alert('html2canvas の読み込みに失敗しました'); throw e;});
      }
      try{
        const el = document.documentElement;
        const canvas = await html2canvas(el, {
          useCORS: true,
          windowWidth: el.scrollWidth,
          windowHeight: el.scrollHeight,
          scale: Math.min(2, window.devicePixelRatio || 1)
        });
        const blob = await new Promise(res=>canvas.toBlob(res,'image/png'));
        if(navigator.clipboard && window.ClipboardItem){
          await navigator.clipboard.write([new ClipboardItem({'image/png': blob})]);
          alert('スクリーンショットをクリップボードにコピーしました');
        } else {
          // クリップボード非対応なら新しいタブで開く
          const url = URL.createObjectURL(blob);
          window.open(url,'_blank');
          alert('クリップボード未対応のため、画像を新しいタブで開きました');
        }
      }catch(err){
        alert('スクリーンショット取得に失敗しました: ' + (err && err.message || err));
        console.error(err);
      }
    })()
    
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2025/09/03 15:49:49 - 09/03