generated at
DeepLのChrome拡張機能をScrapbox内限定で無効化するUserScript
DeepLChrome拡張機能は便利だなぁ。
拡張機能が欲しい人はここ:DeepL Translate (beta version) - Chrome Web Store
でもScrapbox内ではアイコンが邪魔くさいなぁ。
これ↓
本来はテキストエリアを翻訳するための機能なのだが、Scrapbox内ではうまく機能していない模様。
なのでScrapbox内では無効化するUserScriptを作った。
ぶっちゃけると拡張機能をクリックしてメニューを出して、「書く」を無効化すればそれで解決する。
これに気づいたのがUserScript作った後です。はい・・・orz
一応、Scrapbox限定で無効化できるっていう利点はあるし、多少はね?(- -;)


ソース
removeDeepLExtention.js
function removeDeepLExtention(){ // 実行後は文字カーソルが更新されるまで待ち、更新された一定時間後にDeepL拡張機能の無効化処理を開始する。 let delayTime = 150 // カーソル移動してから削除するまでの秒数(ミリ秒)。 const target = document.querySelector(".cursor") const observer = new MutationObserver(records => {observer.disconnect();remove(delayTime);}) observer.observe(target, {attributes: true}) function remove(delayTime){ window.setTimeout(()=>{ let target = document.querySelector("deepl-inline-translate") if (target === null) return target.remove(); },delayTime) } } removeDeepLExtention(); // 通常起動 scrapbox.on('page:changed', removeDeepLExtention); // ページを切り替えた時にも起動 scrapbox.on('lines:changed', removeDeepLExtention); // 行を編集した時にも起動

注意点
これを使用すると右クリックメニューの「選択したテキストを翻訳」も使えなくなります。
それはDeepLの拡張機能がShadow DOMを利用し、その中に表示部分をすべてまとめているため。
このUserScriptではそのShadow DOM自身を削除している。
うまく削除されずに残る場合は2行目の delayTime の値を増やしてみてください。
このUserScriptを使う場合は import を使わずにソース全文をコピペして下さい(セキュリティ的な理由)。


参考にしたサイト