注意: 保存した後、ブラウザのキャッシュをクリアする必要があります。Mozilla / Firefox / Safari: [Shift] を押しながら [再読み込み] をクリック、または [Shift]-[Ctrl]-[R] (Macでは [Cmd]-[Shift]-[R]); IE: [Ctrl] を押しながら [更新] をクリック、または [Ctrl]-[F5]; Konqueror: [再読み込み] をクリック、または [F5]; Opera: 「ツール」→「設定」からキャッシュをクリア。

/**
 * 文字数を種類ごとにカウントするツール。※ただし合字ゟ、ヿ、𪜈は非対応
 * 起動方法は、
 * 	1.ページ上部の文字数タブをクリック(記事全体の文字数をカウント)
 * 	2.カウント対象の文字列を選択し、Ctrl + Shift + G(選択範囲の文字数をカウント)
 * 下リンクによれば、ひらがなは60~70%、漢字は20~30%、カタカナは10%が理想である。
 * https://books.google.co.jp/books?id=ZSkfBAAAQBAJ&pg=PA106&lpg=PA106#v=onepage&q&f=false
 * 表記の詳細は[[b:ja:Wikibooks:スタイルマニュアル#日本語の様式]]を参照。
 */
(function() {
	'use strict';

	// 画面上部のタブ
	$('#p-namespaces > ul')
		.append($('<li><span><a>文字数</a></span></li>').attr({'id':'char-count'}));
	$('#char-count').click(function() {
		counter();
	});
	// キーボードショートカット (Ctrl + Shift + G)
	$(window).keydown(function(e){
		if (e.ctrlKey && e.shiftKey && e.keyCode === 71) {
			counter();
			return false;
		}
	});

	function counter () {
		// 文字列の取得
		var endPos = 0;
		var startPos = 0;
		var txt = '';
		var wpTextbox = {};
		if (document.getElementById('editform')) {
			wpTextbox = document.forms.editform.wpTextbox1;
			if (wpTextbox.selectionStart) {
				endPos = wpTextbox.selectionEnd;
				startPos = wpTextbox.selectionStart;
				txt = wpTextbox.value.substring(startPos,endPos);
			} else {
				txt = wpTextbox.value;
			}
		} else if (document.getSelection().toString().length > 0) {
			txt = document.getSelection().toString();
		} else {
			txt = document.getElementById('bodyContent').textContent;
		}

		// テキストから文字種ごとにまとめ、文字数カウント
		var han = txt.match(/[\u2e80-\u2fdf|\u3400-\u4dbf|\u4e00-\u9fff|\uf900-\ufaff|[\ud840-\ud87e]|[\ud840-\ud87e][\udc00-\udfff]]/g) || '';
		var hira = txt.match(/[ぁ-ゖ|𛀁]/g) || '';
		var kana = txt.match(/[ァ-ヺ|ㇰ-ㇿ|ヲ-ン|𛀀]/g) || '';
		var numHan = han.length;
		var numHira = hira.length;
		var numKana = kana.length;
		var numTotal = txt.length;
		var numJpan = numHan + numHira + numKana;
		var numOther = numTotal - numJpan;
		alert('漢字: ' + numHan + '文字 (' + Math.round(numHan / numJpan * 100) + '%) 、'
			+ 'ひらがな: ' + numHira + '文字 (' + Math.round(numHira / numJpan * 100) + '%) 、'
			+ 'カタカナ: ' + numKana + '文字 (' + Math.round(numKana / numJpan * 100) + '%) 、'
			+ 'その他: ' + numOther + '文字');
	}
}());