スクリーンショットをクリップボードに入れる
by
xtetsuji
09/03 [2025/09/03 15:49:49]
現在閲覧しているサイトのスクリーンショットをクリップボードに入れます
-
/*
* @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 です。