enjoykoreaのテキストエリアをGreaseamonkeyで変える話

 韓国北朝鮮ネタがあるときに時々行って遊ぶenjoykoreaなるサイトだと、デフォのテキストエリアが一行しかなくて小さすぎて不便だなぁと思ったので、適当に変えてみた話。

■どういう風に不便か。
 デフォの1行だと二行以上の書き込みしようとすると自分が書いた文面が見えなくなってしまい、書き間違いが頻発する。掲示板時代が自動翻訳依存なので書き間違いは相当に致命的な誤訳をするから、意外と厄介。

Greaseamonkeyを自分で試すのに丁度良いと思って適当に書いてみた。取り合えず動いたので、コードが之で問題ないのかは知らないが、特に気にもせずにここに書いておく事に。ええ、欝な感じに投げやりなのは秘密ですが。ボタンを追加するのは試しにやってみただけなので、余り実用性はない感じ。というか、ボタンのあたりはコード重複しているので、適当にまとめてやるのが普通なのかもしれないが、そんな高尚な考えはないので、気が向いた時に変えるかも。

// ==UserScript==
// @name           enjoyKorea
// @namespace      himadatanode
// @include        http://bbs.enjoykorea.jp/tbbs/read.php*
// ==/UserScript==



//////////// change textarea hight //////////
//textareaの高さを設定
var def_textAreaHeight = 100;

//textareaの位置を取得
var inputArea = document.getElementsByName('ment_ment');
//textareaの高さを変更
if (inputArea[0]){
	inputArea[0].style.height = def_textAreaHeight + "px";}



///////////// add reset button ///////////////
function resetArea(){
	document.getElementsByName('ment_ment')[0].value = '';
}

var resetButton   = document.createElement('input');
resetButton.type  = 'button';
resetButton.value = 'reset value';
//resetbutton.onclickだとFirefoxのバグらしき関係で動かないので注意
resetButton.addEventListener("click", function (){
	document.getElementsByName('ment_ment')[0].value = '';
} , false);

inputArea[0].parentNode.insertBefore(resetButton, this.lastChild);


//////////// add more area button /////////////
var areaSetting  = 25; //一回押した時に増える高さ
var textAreaHeight = 100; //実際のtextareaの高さ。
var areaHeight   = textAreaHeight + areaSetting; //最終的に変更したい希望の高さ。

var areaButton   = document.createElement('input');
areaButton.type  = 'button';
areaButton.value = 'more Area';
areaButton.addEventListener("click", function (){
	var htime = setTimeout(arguments.callee , 50); //ハンドル
	inputArea[0].style.height = textAreaHeight + "px";
	textAreaHeight += 3;
	if(textAreaHeight >= areaHeight){
		areaHeight = textAreaHeight + areaSetting;;
		clearTimeout(htime); //ハンドル削除
		}
} , false);

inputArea[0].parentNode.insertBefore(areaButton, this.lastChild);


//////////// add reset area button /////////////
var resetAreaButton   = document.createElement('input');
resetAreaButton.type  = 'button';
resetAreaButton.value = 'reset Area';
resetAreaButton.addEventListener("click", function (){
	var htime = setTimeout(arguments.callee , 50); //ハンドル
	inputArea[0].style.height = textAreaHeight + "px";
	textAreaHeight -= 3;
	if(textAreaHeight <= def_textAreaHeight){
		areaHeight = def_textAreaHeight + areaSetting;
		clearTimeout(htime); //ハンドル削除
		inputArea[0].style.height = def_textAreaHeight + "px";
		}
} , false);

inputArea[0].parentNode.insertBefore(resetAreaButton, this.lastChild);

/// enjoykorea.user.js ends here

プレビューとかip取得とか、どうでも良い感じの機能もつけようかと思ったけど、面倒になってきたので放置。Script自体は中身がJavascriptそのままだったので、Cとかにも似てるし何となくやってみた感じでも意外と作れそう。ニコニコのコメントとかも。なんか使い難いので、テンションが上がってきたら貼り付けるかも。