Jump to content

User:かんがへなし/ひらがな、カタカナの入れ替へ

From Wikimedia Incubator

ひらがなとカタカナを入れ替えたい場合について

手順

[edit | edit source]
  1. アカウントを作り、ログインする。
  2. 「User:ユーザー名/monobook.js」の編集画面を出す。

    「ユーザー名」の所は、貴方のアカウントにしてください。また「monobook」は、貴方が選んだスキン(MediaWikiの見た目)の名前を全て小文字にした名前です。デフォルトは「monobook」です。

    1. 左の「search」の所のテキストボックスに「User:ユーザー名/monobook.js」と入れて「Go」ボタンをクリックしてください。
    2. そして、表示されたページの「edit」をクリックして編集画面を出してください。
  3. 後に示すJavaScriptをコピーペーストして「Save page」ボタンをクリックして保存する。
  4. 「F5」キーなどで読み込みなおす。

使い方

[edit | edit source]

このJavaScriptを使うと、表示時に、平仮名と片仮名を入れ替えることが出来ます。 ただし、一瞬だけ元の状態の物が表示されてしまう場合があります(JavaScriptを使っている為の制限)。

また、このJavaScriptによって、「log out」(日本語だと「ログアウト」)の次に「かな」が付け足されます。 その「かな」をクリックすると、再び平仮名と片仮名が入れ替わります。

JavaScript

[edit | edit source]

次に示すJavaScriptは、かんがへなしが作りました。 好き勝手にコピーして、そのコピーを好みに合わせて改変してお使いください。 ただし、作者は、一切の責任を負わないものとします。

コピーする場合は、「/* <pre> */」から「/* </pre> */」までを、記事として表示されている状態でコピーするのが良いと思います。

/* <pre> */

function exchangeHiraganaKatakana(str)
{
	var ret_str = "";
	var code;
	var i;

	for (i = 0; i < str.length; i ++) {
		code = str.charCodeAt(i);
		if (0x3041 <= code && code <= 0x30F4) {
			if (code <= 0x3094)
				code += 0x60;
			else if (0x30A1 <= code)
				code -= 0x60;
		}

		ret_str += String.fromCharCode(code);
	}

	return ret_str;
}

function exchangeAllKanaInner(element)
{
	var i, j;
	var obj;
	var attrs;
	var name = element.nodeName.toLowerCase();

	if (name == "textarea"
			|| name == "input"
			) {
		return;
	}
	else if (name == "option") {
		if (! element.getAttribute("value"))
			return;
	}

	for (i = 0; i < element.childNodes.length; i ++) {
		obj = element.childNodes[i];

		if (obj.nodeType == 1) {
			// element
			exchangeAllKanaInner(obj);
		}
		else if (obj.nodeType == 3) {
			// text node
			obj.nodeValue = exchangeHiraganaKatakana(obj.nodeValue);
		}
	}
}

function exchangeAllKana()
{
	var obj = document.getElementsByTagName("body").item(0);
	exchangeAllKanaInner(obj);
}

function addKanaExchangeTab()
{
	var new_a = document.createElement("a");
	new_a.setAttribute("href", "javascript:exchangeAllKana();");
	new_a.appendChild(document.createTextNode("カナ"));

	var new_li = document.createElement("li");
	new_li.setAttribute("id", "pt-kana");
	new_li.appendChild(new_a);

	var obj = document.getElementById("pt-userpage").parentNode;
	obj.appendChild(new_li);

	exchangeAllKana(); // ←始めに入れ替えをしないなら、この行を消すかコメントアウトする。
}

if (window.addEventListener) window.addEventListener("load", addKanaExchangeTab, false);
else if (window.attachEvent) window.attachEvent("onload", addKanaExchangeTab);

/* </pre> */