scrapbox-editor-open-link
動機
キーボードから手を離さずに、ページ遷移したい。
ページ遷移のキーを簡単に設定したい。
参考
機能
Scrapboxでリンクにテキストカーソルを合わせてショートカットキーを押すと、カーソル位置にあるリンクを開く。
設定方法
自分のページに下記を貼り付ける。
自分のページ(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.jswindow.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