Skip to content

Instantly share code, notes, and snippets.

@khsk
Last active September 9, 2015 00:34
Show Gist options
  • Save khsk/58ec5c032aa73e1f83c2 to your computer and use it in GitHub Desktop.
Save khsk/58ec5c032aa73e1f83c2 to your computer and use it in GitHub Desktop.
Qiitaの本文で一時的に最下部へ移動するユーザースクリプト ref: http://qiita.com/khsk/items/c5423c9cefdd26e3dbb1
// ==UserScript==
// @name Qiita round trip button
// @namespace khsk
// @description 最下部へ移動し、戻るボタンを追加
// @include http://qiita.com/drafts/*
// @version 1
// @grant none
// ==/UserScript==
// インターフェース作成
var i = document.createElement('i')
i.className = 'fa fa-arrow-down'
var div = document.createElement('div')
div.appendChild(i)
div.style.float = 'left'
div.style.fontSize = '24px'
// 「書き方」のマウスオーバーを拝借
div.className = 'editorMarkdown_help'
// document.getElementsByClassName('editorMarkdown_toolBar')[0].appendChild(div)
// ↑では、本文のみ表示時に現れるプレビューボタンより右に出てしまうので、左に出す
var tool_bar = document.getElementsByClassName('editorMarkdown_toolBar')[0]
tool_bar.insertBefore(div, tool_bar.lastChild)
// イベント登録
// キャレットはStart,End両方移動しないと選択状態になる
var body = document.getElementById('draft_item_raw_body')
var original_caret = 0
// 戻った時に先頭行になってもいいなら不要
var original_scroll = 0
// 移動前のキャレットを保存し、最下部へ移動
var down_caret = function(e){
original_caret = body.selectionStart
original_scroll = body.scrollTop
move_caret = body.value.length
body.selectionStart = move_caret
body.selectionEnd = move_caret
i.className = 'fa fa-arrow-up'
div.removeEventListener('click', down_caret)
div.addEventListener('click', up_caret)
body.focus()
}
// 保存したキャレットへ戻る
var up_caret = function(e) {
body.selectionStart = original_caret
body.selectionEnd = original_caret
body.scrollTop = original_scroll
i.className = 'fa fa-arrow-down'
div.removeEventListener('click', up_caret)
div.addEventListener('click', down_caret)
body.focus()
}
div.addEventListener('click', down_caret)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment