generated at
scrapbox-editor-open-link

動機
キーボードから手を離さずに、ページ遷移したい。
ページ遷移のキーを簡単に設定したい。
参考

機能
Scrapboxでリンクにテキストカーソルを合わせてショートカットキーを押すと、カーソル位置にあるリンクを開く。

設定方法
自分のページに下記を貼り付ける。
scrapbox-shortcutを導入していない場合は先に下記を貼り付ける。
自分のページ(js)
code:script.js import '/api/code/foldrr/scrapbox-shortcut/script.js'
上記よりも後の部分で下記を貼り付けて、編集する。
自分のページ(js)
code:script.js import '/api/code/foldrr/scrapbox-editor-open-link/script.js' scrapboxShortcut.onEdit('ctrl+o', scrapboxEditorOpenLink);

コード
script.js
window.scrapboxEditorOpenLink = e => { e.preventDefault(); let getWindowRect = (w, el) => { let rect = el.getBoundingClientRect() return new DOMRect(w.pageXOffset + rect.x, w.pageYOffset + rect.y, rect.width, rect.height) } let isIntersected = (cursorRect, linkRect) => { let cx = (cursorRect.left + cursorRect.right) / 2 let cy = (cursorRect.top + cursorRect.bottom) / 2 return linkRect.left <= cx && cx <= linkRect.right && linkRect.top <= cy && cy <= linkRect.bottom } let cursor = document.querySelector('.cursor') let links = Array.from(document.querySelectorAll('.text .page-link')) let cursorRect = getWindowRect(window, document.querySelector('.cursor')) let forcusedLink = links.find(link => isIntersected(cursorRect, getWindowRect(window, link))); if (! forcusedLink) return; forcusedLink.click(); setTimeout(() => { $('.search-form input')[0].focus(); $('#text-input')[0].focus() }, 500); }

バージョン履歴
v0.0.1
作成。
v0.0.2
ショートカットキーの設定は scrapbox-shortcut に任せるようにした。