1 / 1
PCのブラウザで小説を読む人向けのキーボードでページめくりできるスクリプト
しおりを挟む
アルファポリスで小説を読むとき、前の話や次の話を見るには画面の先頭や末尾までスクロールしてクリックする必要があります。
これをいつでもワンキーでできるようにする魔法をこれから紹介します。
① Google Chrome や Firefox などのブラウザをお使いの方は、まず最初にスクリプト実行できる拡張機能を選んで有効にしてください。
JavaScript を inject 実行できる拡張機能ならなんでもよいです。
Chrome では Script Injector や Script Runner Pro など、Firefox なら run-a-script や Injector などといったものが無数にあります。
使いやすく信頼できるものを選んでください。
② 次に以下のスクリプトをコピペして必要なサイトで自動で読み込むように設定してください。
ページめくりスクリプト
///////////////////////////////////////////////////ここから
(() => {
"use strict";
const list = [
{ url: 'kakuyomu.jp/works/',
code: 'ArrowLeft',
modifiers: '',
type: 'query',
link: 'link[rel="prev"]',
},
{ url: 'kakuyomu.jp/works/',
code: 'NumpadSubtract',
modifiers: '',
type: 'query',
link: 'link[rel="prev"]',
},
{ url: 'kakuyomu.jp/works/',
code: 'ArrowRight',
modifiers: '',
type: 'query',
link: 'link[rel="next"]',
},
{ url: 'kakuyomu.jp/works/',
code: 'NumpadAdd',
modifiers: '',
type: 'query',
link: 'link[rel="next"]',
},
{ url: 'kakuyomu.jp/works/',
code: 'Enter',
modifiers: '',
type: 'a',
link: '続きから読む',
},
{ url: 'kakuyomu.jp/works/',
code: 'NumpadEnter',
modifiers: '',
type: 'a',
link: '続きから読む',
},
{ url: 'https://kakuyomu.jp/my/antenna/works',
code: 'ArrowLeft',
modifiers: '',
type: 'a',
link: '前へ',
},
{ url: 'https://kakuyomu.jp/my/antenna/works',
code: 'NumpadSubtract',
modifiers: '',
type: 'a',
link: '前へ',
},
{ url: 'https://kakuyomu.jp/my/antenna/works',
code: 'ArrowRight',
modifiers: '',
type: 'a',
link: '次へ',
},
{ url: 'https://kakuyomu.jp/my/antenna/works',
code: 'NumpadAdd',
modifiers: '',
type: 'a',
link: '次へ',
},
{ url: 'kakuyomu.jp/',
code: 'BracketLeft',
modifiers: '',
type: 'url',
link: 'https://kakuyomu.jp/my',
},
{ url: 'kakuyomu.jp/',
code: 'Numpad3',
modifiers: '',
type: 'url',
link: 'https://kakuyomu.jp/my',
},
{ url: 'kakuyomu.jp/',
code: 'BracketRight',
modifiers: '',
type: 'url',
link: 'https://kakuyomu.jp/my/antenna/works',
},
{ url: 'kakuyomu.jp/',
code: 'Numpad2',
modifiers: '',
type: 'url',
link: 'https://kakuyomu.jp/my/antenna/works',
},
{ url: 'syosetu.com/',
code: 'ArrowLeft',
modifiers: '',
type: 'query',
link: 'a.c-pager__item--before',
},
{ url: 'syosetu.com/',
code: 'NumpadSubtract',
modifiers: '',
type: 'query',
link: 'a.c-pager__item--before',
},
{ url: 'syosetu.com/',
code: 'ArrowRight',
modifiers: '',
type: 'query',
link: 'a.c-pager__item--next',
},
{ url: 'syosetu.com/',
code: 'NumpadAdd',
modifiers: '',
type: 'query',
link: 'a.c-pager__item--next',
},
{ url: 'syosetu.com/favnovelmain',
code: 'ArrowLeft',
modifiers: '',
type: 'query',
link: 'a.c-up-pager__item[title*="前"]',
},
{ url: 'syosetu.com/favnovelmain',
code: 'NumpadSubtract',
modifiers: '',
type: 'query',
link: 'a.c-up-pager__item[title*="前"]',
},
{ url: 'syosetu.com/favnovelmain',
code: 'ArrowRight',
modifiers: '',
type: 'query',
link: 'a.c-up-pager__item[title*="次"]',
},
{ url: 'syosetu.com/favnovelmain',
code: 'NumpadAdd',
modifiers: '',
type: 'query',
link: 'a.c-up-pager__item[title*="次"]',
},
{ url: 'syosetu.com/impression/',
code: 'ArrowLeft',
modifiers: '',
type: 'query',
link: 'a[title="前のページ"]',
},
{ url: 'syosetu.com/impression/',
code: 'NumpadSubtract',
modifiers: '',
type: 'query',
link: 'a[title="前のページ"]',
},
{ url: 'syosetu.com/impression/',
code: 'ArrowRight',
modifiers: '',
type: 'query',
link: 'a[title="次のページ"]',
},
{ url: 'syosetu.com/impression/',
code: 'NumpadAdd',
modifiers: '',
type: 'query',
link: 'a[title="次のページ"]',
},
{ url: 'syosetu.com/impression/',
code: 'ArrowLeft',
modifiers: '+',
type: 'dec',
re: '\/no\/(\\d+)\/.*',
str: '/no/$$/',
},
{ url: 'syosetu.com/impression/',
code: 'NumpadSubtract',
modifiers: '+',
type: 'dec',
re: '\/no\/(\\d+)\/.*',
str: '/no/$$/',
},
{ url: 'syosetu.com/impression/',
code: 'ArrowRight',
modifiers: '+',
type: 'inc',
re: '\/no\/(\\d+)\/.*',
str: '/no/$$/',
},
{ url: 'syosetu.com/impression/',
code: 'NumpadAdd',
modifiers: '+',
type: 'inc',
re: '\/no\/(\\d+)\/.*',
str: '/no/$$/',
},
{ url: 'syosetu.com/',
code: 'Enter',
modifiers: '',
type: 'query',
link: 'div.p-novel__bookmarker-no > a',
},
{ url: 'syosetu.com/',
code: 'NumpadEnter',
modifiers: '',
type: 'query',
link: 'div.p-novel__bookmarker-no > a',
},
{ url: 'syosetu.com/',
code: 'Enter',
modifiers: '',
type: 'queryclick',
link: 'input[name*="siori_url"]',
},
{ url: 'syosetu.com/',
code: 'NumpadEnter',
modifiers: '',
type: 'queryclick',
link: 'input[name*="siori_url"]',
},
{ url: 'syosetu.com/',
code: 'BracketLeft',
modifiers: '',
type: 'url',
link: 'https://syosetu.com/user/top/',
},
{ url: 'syosetu.com/',
code: 'Numpad3',
modifiers: '',
type: 'url',
link: 'https://syosetu.com/user/top/',
},
{ url: 'syosetu.com/',
code: 'BracketLeft',
modifiers: '+',
type: 'url',
link: 'https://syosetu.com/xuser/top/',
},
{ url: 'syosetu.com/',
code: 'Numpad6',
modifiers: '',
type: 'url',
link: 'https://syosetu.com/xuser/top/',
},
{ url: 'syosetu.com/',
code: 'BracketRight',
modifiers: '',
type: 'url',
link: 'https://syosetu.com/favnovelmain/list/',
},
{ url: 'syosetu.com/',
code: 'Numpad2',
modifiers: '',
type: 'url',
link: 'https://syosetu.com/favnovelmain/list/',
},
{ url: 'syosetu.com/',
code: 'BracketRight',
modifiers: '+',
type: 'url',
link: 'https://syosetu.com/favnovelmain18/list/',
},
{ url: 'syosetu.com/',
code: 'Numpad5',
modifiers: '',
type: 'url',
link: 'https://syosetu.com/favnovelmain18/list/',
},
{ url: 'www.alphapolis.co.jp/novel/',
code: 'ArrowLeft',
modifiers: '',
type: 'a',
link: '前の話',
},
{ url: 'www.alphapolis.co.jp/novel/',
code: 'NumpadSubtract',
modifiers: '',
type: 'a',
link: '前の話',
},
{ url: 'www.alphapolis.co.jp/novel/',
code: 'ArrowRight',
modifiers: '',
type: 'a',
link: '次の話',
},
{ url: 'www.alphapolis.co.jp/novel/',
code: 'NumpadAdd',
modifiers: '',
type: 'a',
link: '次の話',
},
{ url: 'www.alphapolis.co.jp/novel/',
code: 'Enter',
modifiers: '',
type: 'a',
link: '続きから読む',
},
{ url: 'www.alphapolis.co.jp/novel/',
code: 'NumpadEnter',
modifiers: '',
type: 'a',
link: '続きから読む',
},
{ url: 'www.alphapolis.co.jp/novel/',
code: 'Enter',
modifiers: '',
type: 'queryclick',
link: 'span.bookmark.enabled',
},
{ url: 'www.alphapolis.co.jp/novel/',
code: 'NumpadEnter',
modifiers: '',
type: 'queryclick',
link: 'span.bookmark.enabled',
},
{ url: 'www.alphapolis.co.jp/',
code: 'BracketLeft',
modifiers: '',
type: 'url',
link: 'https://www.alphapolis.co.jp/mypage/content',
},
{ url: 'www.alphapolis.co.jp/',
code: 'Numpad3',
modifiers: '',
type: 'url',
link: 'https://www.alphapolis.co.jp/mypage/content',
},
{ url: 'www.alphapolis.co.jp/',
code: 'BracketRight',
modifiers: '',
type: 'url',
link: 'https://www.alphapolis.co.jp/mypage/favorite',
},
{ url: 'www.alphapolis.co.jp/',
code: 'Numpad2',
modifiers: '',
type: 'url',
link: 'https://www.alphapolis.co.jp/mypage/favorite',
},
];
const excludeList = [
['kakuyomu.jp/my/works/', 'new'],
['kakuyomu.jp/my/works/', 'edit'],
['kakuyomu.jp/my/works/', 'episodes'],
['syosetu.com/user', 'input'],
['www.alphapolis.co.jp/mypage/novel/save'],
['x.com'],
];
function eKeyHandler(e) {
switch (e.target.tagName.toLowerCase()) {
case 'input':
case 'textarea':
case 'select':
// disable while input
return;
}
let url = location.href;
for (let i=excludeList.length-1; i>=0; i--) {
let l = excludeList[i];
let r = true;
for (let j=l.length-1; j>=0; j--) {
if (!url.includes(l[j])) { r = false; break; }
}
if (r) return;
}
if (e.code == 'Escape') {
let msg = document.getElementById('_msgFrame');
if (msg != null) {
document.body.removeChild(msg);
}
return;
}
let found = false;
for (let i=list.length-1; i>=0; i--) {
let l = list[i];
if (url.includes(l.url)
&& l.code == e.code
&& l.modifiers.includes('+') == e.shiftKey
&& l.modifiers.includes('^') == e.ctrlKey
&& l.modifiers.includes('!') == e.altKey
&& l.modifiers.includes('#') == e.metaKey) {
switch (l.type) {
case 'a': // search <a> with content matched in innerHTML and jump
{
let els = document.getElementsByTagName('a');
for (let j=els.length-1; j>=0; j--) {
if (els[j].innerHTML.includes(l.link)) {
location.href = els[j].href;
return;
}
}
}
break;
case 'aclick': // search <a> with content matched in innerHTML and click
{
let els = document.getElementsByTagName('a');
for (let j=els.length-1; j>=0; j--) {
if (els[j].innerHTML.includes(l.link)) {
els[j].click();
return;
}
}
}
break;
case 'query': // search by query and jump
{
let el = document.querySelector(l.link);
if (el) {
location.href = el.href;
return;
}
}
break;
case 'queryclick': // search by query and click
{
let el = document.querySelector(l.link);
if (el) {
el.click();
return;
}
}
break;
case 'url': // jump to url
location.href = l.link;
return;
case 'inc': // increase number
location.href = url.replace(new RegExp(l.re), (match, p1) => l.str.replace('$$', Number(p1) + 1));
return;
case 'dec': // decrease number
location.href = url.replace(new RegExp(l.re), (match, p1) => l.str.replace('$$', Number(p1) - 1));
return;
}
found = true;
}
}
if (found) {
let msg = document.getElementById('_msgFrame');
if (msg == null) {
let tmp = document.createElement('div');
tmp.id = '_msgFrame';
tmp.style.display = 'flex';
tmp.style.justifyContent = 'center';
tmp.style.alignItems = 'center';
tmp.style.position = 'fixed';
tmp.style.top = '60px';
tmp.style.right = '60px';
tmp.style.width = '400px';
tmp.style.height = '100px';
tmp.style.pointerEvents = 'none';
tmp.style.backgroundColor = '#fffa';
tmp.style.color = 'red';
tmp.style.fontSize = '72px';
tmp.innerText = 'Not Found';
document.body.appendChild(tmp);
}
}
}
document.addEventListener("keydown", eKeyHandler, false);
})();
///////////////////////////////////////////////////ここまで
操作方法
・カーソルキー左、またはテンキーのマイナス⇒前の話を表示
・カーソルキー右、またはテンキーのプラス⇒次の話を表示
・表紙でEnterキー、またはテンキーのEnterキー⇒現在読んでいるページを表示
・各話でEnterキー、またはテンキーのEnterキー⇒しおりを挟む
・@キー、またはテンキーの3⇒小説・漫画の投稿を表示
・[キー、またはテンキーの2⇒お気に入りを表示
・操作が失敗したとき「Not Found」と表示する
・Escキーで「Not Found」を消す
カクヨム、なろう(感想欄含む)、アルファポリスに対応しています。
JavaScript がわかる人はキーをカスタマイズするなどして自分の使いやすいように改造してください。
ご質問があればお気軽にどうぞ。
これをいつでもワンキーでできるようにする魔法をこれから紹介します。
① Google Chrome や Firefox などのブラウザをお使いの方は、まず最初にスクリプト実行できる拡張機能を選んで有効にしてください。
JavaScript を inject 実行できる拡張機能ならなんでもよいです。
Chrome では Script Injector や Script Runner Pro など、Firefox なら run-a-script や Injector などといったものが無数にあります。
使いやすく信頼できるものを選んでください。
② 次に以下のスクリプトをコピペして必要なサイトで自動で読み込むように設定してください。
ページめくりスクリプト
///////////////////////////////////////////////////ここから
(() => {
"use strict";
const list = [
{ url: 'kakuyomu.jp/works/',
code: 'ArrowLeft',
modifiers: '',
type: 'query',
link: 'link[rel="prev"]',
},
{ url: 'kakuyomu.jp/works/',
code: 'NumpadSubtract',
modifiers: '',
type: 'query',
link: 'link[rel="prev"]',
},
{ url: 'kakuyomu.jp/works/',
code: 'ArrowRight',
modifiers: '',
type: 'query',
link: 'link[rel="next"]',
},
{ url: 'kakuyomu.jp/works/',
code: 'NumpadAdd',
modifiers: '',
type: 'query',
link: 'link[rel="next"]',
},
{ url: 'kakuyomu.jp/works/',
code: 'Enter',
modifiers: '',
type: 'a',
link: '続きから読む',
},
{ url: 'kakuyomu.jp/works/',
code: 'NumpadEnter',
modifiers: '',
type: 'a',
link: '続きから読む',
},
{ url: 'https://kakuyomu.jp/my/antenna/works',
code: 'ArrowLeft',
modifiers: '',
type: 'a',
link: '前へ',
},
{ url: 'https://kakuyomu.jp/my/antenna/works',
code: 'NumpadSubtract',
modifiers: '',
type: 'a',
link: '前へ',
},
{ url: 'https://kakuyomu.jp/my/antenna/works',
code: 'ArrowRight',
modifiers: '',
type: 'a',
link: '次へ',
},
{ url: 'https://kakuyomu.jp/my/antenna/works',
code: 'NumpadAdd',
modifiers: '',
type: 'a',
link: '次へ',
},
{ url: 'kakuyomu.jp/',
code: 'BracketLeft',
modifiers: '',
type: 'url',
link: 'https://kakuyomu.jp/my',
},
{ url: 'kakuyomu.jp/',
code: 'Numpad3',
modifiers: '',
type: 'url',
link: 'https://kakuyomu.jp/my',
},
{ url: 'kakuyomu.jp/',
code: 'BracketRight',
modifiers: '',
type: 'url',
link: 'https://kakuyomu.jp/my/antenna/works',
},
{ url: 'kakuyomu.jp/',
code: 'Numpad2',
modifiers: '',
type: 'url',
link: 'https://kakuyomu.jp/my/antenna/works',
},
{ url: 'syosetu.com/',
code: 'ArrowLeft',
modifiers: '',
type: 'query',
link: 'a.c-pager__item--before',
},
{ url: 'syosetu.com/',
code: 'NumpadSubtract',
modifiers: '',
type: 'query',
link: 'a.c-pager__item--before',
},
{ url: 'syosetu.com/',
code: 'ArrowRight',
modifiers: '',
type: 'query',
link: 'a.c-pager__item--next',
},
{ url: 'syosetu.com/',
code: 'NumpadAdd',
modifiers: '',
type: 'query',
link: 'a.c-pager__item--next',
},
{ url: 'syosetu.com/favnovelmain',
code: 'ArrowLeft',
modifiers: '',
type: 'query',
link: 'a.c-up-pager__item[title*="前"]',
},
{ url: 'syosetu.com/favnovelmain',
code: 'NumpadSubtract',
modifiers: '',
type: 'query',
link: 'a.c-up-pager__item[title*="前"]',
},
{ url: 'syosetu.com/favnovelmain',
code: 'ArrowRight',
modifiers: '',
type: 'query',
link: 'a.c-up-pager__item[title*="次"]',
},
{ url: 'syosetu.com/favnovelmain',
code: 'NumpadAdd',
modifiers: '',
type: 'query',
link: 'a.c-up-pager__item[title*="次"]',
},
{ url: 'syosetu.com/impression/',
code: 'ArrowLeft',
modifiers: '',
type: 'query',
link: 'a[title="前のページ"]',
},
{ url: 'syosetu.com/impression/',
code: 'NumpadSubtract',
modifiers: '',
type: 'query',
link: 'a[title="前のページ"]',
},
{ url: 'syosetu.com/impression/',
code: 'ArrowRight',
modifiers: '',
type: 'query',
link: 'a[title="次のページ"]',
},
{ url: 'syosetu.com/impression/',
code: 'NumpadAdd',
modifiers: '',
type: 'query',
link: 'a[title="次のページ"]',
},
{ url: 'syosetu.com/impression/',
code: 'ArrowLeft',
modifiers: '+',
type: 'dec',
re: '\/no\/(\\d+)\/.*',
str: '/no/$$/',
},
{ url: 'syosetu.com/impression/',
code: 'NumpadSubtract',
modifiers: '+',
type: 'dec',
re: '\/no\/(\\d+)\/.*',
str: '/no/$$/',
},
{ url: 'syosetu.com/impression/',
code: 'ArrowRight',
modifiers: '+',
type: 'inc',
re: '\/no\/(\\d+)\/.*',
str: '/no/$$/',
},
{ url: 'syosetu.com/impression/',
code: 'NumpadAdd',
modifiers: '+',
type: 'inc',
re: '\/no\/(\\d+)\/.*',
str: '/no/$$/',
},
{ url: 'syosetu.com/',
code: 'Enter',
modifiers: '',
type: 'query',
link: 'div.p-novel__bookmarker-no > a',
},
{ url: 'syosetu.com/',
code: 'NumpadEnter',
modifiers: '',
type: 'query',
link: 'div.p-novel__bookmarker-no > a',
},
{ url: 'syosetu.com/',
code: 'Enter',
modifiers: '',
type: 'queryclick',
link: 'input[name*="siori_url"]',
},
{ url: 'syosetu.com/',
code: 'NumpadEnter',
modifiers: '',
type: 'queryclick',
link: 'input[name*="siori_url"]',
},
{ url: 'syosetu.com/',
code: 'BracketLeft',
modifiers: '',
type: 'url',
link: 'https://syosetu.com/user/top/',
},
{ url: 'syosetu.com/',
code: 'Numpad3',
modifiers: '',
type: 'url',
link: 'https://syosetu.com/user/top/',
},
{ url: 'syosetu.com/',
code: 'BracketLeft',
modifiers: '+',
type: 'url',
link: 'https://syosetu.com/xuser/top/',
},
{ url: 'syosetu.com/',
code: 'Numpad6',
modifiers: '',
type: 'url',
link: 'https://syosetu.com/xuser/top/',
},
{ url: 'syosetu.com/',
code: 'BracketRight',
modifiers: '',
type: 'url',
link: 'https://syosetu.com/favnovelmain/list/',
},
{ url: 'syosetu.com/',
code: 'Numpad2',
modifiers: '',
type: 'url',
link: 'https://syosetu.com/favnovelmain/list/',
},
{ url: 'syosetu.com/',
code: 'BracketRight',
modifiers: '+',
type: 'url',
link: 'https://syosetu.com/favnovelmain18/list/',
},
{ url: 'syosetu.com/',
code: 'Numpad5',
modifiers: '',
type: 'url',
link: 'https://syosetu.com/favnovelmain18/list/',
},
{ url: 'www.alphapolis.co.jp/novel/',
code: 'ArrowLeft',
modifiers: '',
type: 'a',
link: '前の話',
},
{ url: 'www.alphapolis.co.jp/novel/',
code: 'NumpadSubtract',
modifiers: '',
type: 'a',
link: '前の話',
},
{ url: 'www.alphapolis.co.jp/novel/',
code: 'ArrowRight',
modifiers: '',
type: 'a',
link: '次の話',
},
{ url: 'www.alphapolis.co.jp/novel/',
code: 'NumpadAdd',
modifiers: '',
type: 'a',
link: '次の話',
},
{ url: 'www.alphapolis.co.jp/novel/',
code: 'Enter',
modifiers: '',
type: 'a',
link: '続きから読む',
},
{ url: 'www.alphapolis.co.jp/novel/',
code: 'NumpadEnter',
modifiers: '',
type: 'a',
link: '続きから読む',
},
{ url: 'www.alphapolis.co.jp/novel/',
code: 'Enter',
modifiers: '',
type: 'queryclick',
link: 'span.bookmark.enabled',
},
{ url: 'www.alphapolis.co.jp/novel/',
code: 'NumpadEnter',
modifiers: '',
type: 'queryclick',
link: 'span.bookmark.enabled',
},
{ url: 'www.alphapolis.co.jp/',
code: 'BracketLeft',
modifiers: '',
type: 'url',
link: 'https://www.alphapolis.co.jp/mypage/content',
},
{ url: 'www.alphapolis.co.jp/',
code: 'Numpad3',
modifiers: '',
type: 'url',
link: 'https://www.alphapolis.co.jp/mypage/content',
},
{ url: 'www.alphapolis.co.jp/',
code: 'BracketRight',
modifiers: '',
type: 'url',
link: 'https://www.alphapolis.co.jp/mypage/favorite',
},
{ url: 'www.alphapolis.co.jp/',
code: 'Numpad2',
modifiers: '',
type: 'url',
link: 'https://www.alphapolis.co.jp/mypage/favorite',
},
];
const excludeList = [
['kakuyomu.jp/my/works/', 'new'],
['kakuyomu.jp/my/works/', 'edit'],
['kakuyomu.jp/my/works/', 'episodes'],
['syosetu.com/user', 'input'],
['www.alphapolis.co.jp/mypage/novel/save'],
['x.com'],
];
function eKeyHandler(e) {
switch (e.target.tagName.toLowerCase()) {
case 'input':
case 'textarea':
case 'select':
// disable while input
return;
}
let url = location.href;
for (let i=excludeList.length-1; i>=0; i--) {
let l = excludeList[i];
let r = true;
for (let j=l.length-1; j>=0; j--) {
if (!url.includes(l[j])) { r = false; break; }
}
if (r) return;
}
if (e.code == 'Escape') {
let msg = document.getElementById('_msgFrame');
if (msg != null) {
document.body.removeChild(msg);
}
return;
}
let found = false;
for (let i=list.length-1; i>=0; i--) {
let l = list[i];
if (url.includes(l.url)
&& l.code == e.code
&& l.modifiers.includes('+') == e.shiftKey
&& l.modifiers.includes('^') == e.ctrlKey
&& l.modifiers.includes('!') == e.altKey
&& l.modifiers.includes('#') == e.metaKey) {
switch (l.type) {
case 'a': // search <a> with content matched in innerHTML and jump
{
let els = document.getElementsByTagName('a');
for (let j=els.length-1; j>=0; j--) {
if (els[j].innerHTML.includes(l.link)) {
location.href = els[j].href;
return;
}
}
}
break;
case 'aclick': // search <a> with content matched in innerHTML and click
{
let els = document.getElementsByTagName('a');
for (let j=els.length-1; j>=0; j--) {
if (els[j].innerHTML.includes(l.link)) {
els[j].click();
return;
}
}
}
break;
case 'query': // search by query and jump
{
let el = document.querySelector(l.link);
if (el) {
location.href = el.href;
return;
}
}
break;
case 'queryclick': // search by query and click
{
let el = document.querySelector(l.link);
if (el) {
el.click();
return;
}
}
break;
case 'url': // jump to url
location.href = l.link;
return;
case 'inc': // increase number
location.href = url.replace(new RegExp(l.re), (match, p1) => l.str.replace('$$', Number(p1) + 1));
return;
case 'dec': // decrease number
location.href = url.replace(new RegExp(l.re), (match, p1) => l.str.replace('$$', Number(p1) - 1));
return;
}
found = true;
}
}
if (found) {
let msg = document.getElementById('_msgFrame');
if (msg == null) {
let tmp = document.createElement('div');
tmp.id = '_msgFrame';
tmp.style.display = 'flex';
tmp.style.justifyContent = 'center';
tmp.style.alignItems = 'center';
tmp.style.position = 'fixed';
tmp.style.top = '60px';
tmp.style.right = '60px';
tmp.style.width = '400px';
tmp.style.height = '100px';
tmp.style.pointerEvents = 'none';
tmp.style.backgroundColor = '#fffa';
tmp.style.color = 'red';
tmp.style.fontSize = '72px';
tmp.innerText = 'Not Found';
document.body.appendChild(tmp);
}
}
}
document.addEventListener("keydown", eKeyHandler, false);
})();
///////////////////////////////////////////////////ここまで
操作方法
・カーソルキー左、またはテンキーのマイナス⇒前の話を表示
・カーソルキー右、またはテンキーのプラス⇒次の話を表示
・表紙でEnterキー、またはテンキーのEnterキー⇒現在読んでいるページを表示
・各話でEnterキー、またはテンキーのEnterキー⇒しおりを挟む
・@キー、またはテンキーの3⇒小説・漫画の投稿を表示
・[キー、またはテンキーの2⇒お気に入りを表示
・操作が失敗したとき「Not Found」と表示する
・Escキーで「Not Found」を消す
カクヨム、なろう(感想欄含む)、アルファポリスに対応しています。
JavaScript がわかる人はキーをカスタマイズするなどして自分の使いやすいように改造してください。
ご質問があればお気軽にどうぞ。
0
この作品の感想を投稿する
あなたにおすすめの小説
アルファポリスとカクヨムってどっちが稼げるの?
無責任
エッセイ・ノンフィクション
基本的にはアルファポリスとカクヨムで執筆活動をしています。
どっちが稼げるのだろう?
いろんな方の想いがあるのかと・・・。
2021年4月からカクヨムで、2021年5月からアルファポリスで執筆を開始しました。
あくまで、僕の場合ですが、実データを元に・・・。
24hポイントが0だった作品を削除し再投稿したらHOTランキング3位以内に入った話
アミ100
エッセイ・ノンフィクション
私の作品「乙女ゲームのヒロインに転生、科学を駆使して剣と魔法の世界を生きる」がHOTランキング入り(最高で2位)しました、ありがとうございますm(_ _)m
この作品は2年ほど前に投稿したものを1度削除し、色々投稿の仕方を見直して再投稿したものです。
そこで、前回と投稿の仕方をどう変えたらどの程度変わったのかを記録しておこうと思います。
「投稿時、作品内容以外でどこに気を配るべきなのか」の参考になればと思いますm(_ _)m
アルファポリスであなたの良作を1000人に読んでもらうための25の技
MJ
エッセイ・ノンフィクション
アルファポリスは書いた小説を簡単に投稿でき、世間に公開できる素晴らしいサイトです。しかしながら、アルファポリスに小説を公開すれば必ずしも沢山の人に読んでいただけるとは限りません。
私はアルファポリスで公開されている小説を読んでいて気づいたのが、面白いのに埋もれている小説が沢山あるということです。
すごく丁寧に真面目にいい文章で、面白い作品を書かれているのに評価が低くて心折れてしまっている方が沢山いらっしゃいます。
そんな方に言いたいです。
アルファポリスで評価低いからと言って心折れちゃいけません。
あなたが良い作品をちゃんと書き続けていればきっとこの世界を潤す良いものが出来上がるでしょう。
アルファポリスは本とは違う媒体ですから、みんなに読んでもらうためには普通の本とは違った戦略があります。
書いたまま放ったらかしではいけません。
自分が良いものを書いている自信のある方はぜひここに書いてあることを試してみてください。
ユーザ登録のメリット
- 毎日¥0対象作品が毎日1話無料!
- お気に入り登録で最新話を見逃さない!
- しおり機能で小説の続きが読みやすい!
1~3分で完了!
無料でユーザ登録する
すでにユーザの方はログイン
閉じる