モバイル版scrapboxでコードブロックのコピーに失敗する
モバイル版scrapboxでコードブロック記法のcopyボタンを押してもコピーされないことがあります
コピーに失敗する詳しい条件は把握できていないのですが(開発コンソールを見ればわかるかも)、このような現象が発生するということで報告しておきます
→AndroidのGoogle ChromeでPopup MenuのCopyが時々失敗する
私の手元のスマホでも、時々失敗します。環境は同じく、Android 11、Chrome 96です。
環境
Android 11
Chrome for Android 96
どうやらdocument.execCommand("copy")に失敗しているようですtakker.icon
失敗するときとしないときがあります
条件は不明です
対策
Clipboard APIを使う
scrapboxのコードを読んでみたところ、読み取りはClipboard APIを使っていましたが、書き込みはdocument.execCommand("copy")しか使っていないようです
document.execCommand()は非推奨なので、navigator.clipboard.writeText()に置き換えて欲しいです
IE以外のブラウザで実装済みなので、置き換えても問題ないと思われます
なるほど。そろそろ置き換えても良さそうですねshokai.icon
対応ありがとうございます!!takker.icon
/help-jp/リリースノート2022#61ef902097c291000052841f
User側での応急処置
以下のコードをUserScriptに記入するとコピーが安定します
code:js
const func = Document.prototype.execCommand;
Document.prototype.execCommand = function (name) {
if (name !== "copy") return func.call(this, name);
const text = this.querySelector("textareareadonly")?.value;
// 空文字のときもコピーしない
if (!text) return true;
navigator.clipboard.writeText(text)
.catch((e) => alert(Faild to copy.\nMessage: ${e.message}));
return true;
};
#完了