function nameInitialize(name) { //「対応するclassの値」「ダイアログに出す説明文」を //カンマで区切って列挙していきます。 //例の場合、太郎のダイアログで「ぴろあき」と入れると //の中身が「ぴろあき」に変換されます。 //また、同じように name[3] name[4] とすれば、いくらでも増やせます。 //(ただし処理が重くなるのでほどほどに) //一人だけでいい時は name[0] の一行を残して削除するだけです。 name[0] = "tarou,太郎の名前を決めてください"; // の中身を入力値に変換 name[1] = "hanako,花子の名前を決めてください"; // の中身を入力値に変換 name[2] = "ichirou,一郎の名前を決めてください"; // の中身を入力値に変換 return name; } function nameRewrite() { var cookiePeriod = 1; //cookieの保存日数(必要に応じて変更) //ブラウザ判別 if (!document.getElementsByTagName || (document.all && !window.createPopup) || (window.opera && !document.createEvent)) { if (arguments[0] == "rename") window.alert("ご覧のブラウザでは実行できません。\nこのスクリプトはIE5.5以降・Netscape6以降・Opera7のみで有効です。"); return; } var i, j, e, n, v, c; //配列の作成 var names = nameInitialize(new Array()); var clsAry = new Array(), dlgMsg = new Array(), nameAry = new Array(); for (i = 0; i < names.length; i++) { clsAry[i] = names[i].split(",")[0]; dlgMsg[i] = names[i].split(",")[1]; nameAry[i] = ""; } //cookieを読みこむ if (navigator.cookieEnabled && document.cookie) { c = document.cookie.split("; "); for (i = 0; i < c.length ; i++) { e = c[i].indexOf("="); n = c[i].substring(0, e); if (n == "novelNames") { v = unescape(c[i].substring(e +1)).split(","); for (j = 0; j < names.length; j++) nameAry[j] = v[j] ? v[j] : ""; //cookie配列数よりnames配列数が多い時の対策 break; } } } //名前を聞く if (arguments[0] == "rename") { for (i = 0; i < nameAry.length; i++) { nameAry[i] = window.prompt(dlgMsg[i], nameAry[i]); if (!nameAry[i]) nameAry[i] = ""; else if (document.all) nameAry[i] = unescape(escape(nameAry[i]).split("%00")[0]); } //cookieに保存 if (navigator.cookieEnabled) { v = ""; for (i = 0; i < nameAry.length; i++) v += nameAry[i] + ","; v = v.substring(0, v.length -1); var ex = new Date(); ex.setTime(cookiePeriod *24 *60 *60 *1000 +ex.getTime()); document.cookie = "novelNames=" + escape(v) + "; expires=" + ex.toGMTString(); } } //名前を書き換え var span = document.getElementsByTagName("span"), l = span.length; for (i = 0; i < l; i++) { for (j = 0; j < clsAry.length; j++) { if (span[i].className == clsAry[j] && nameAry[j]) { span[i].firstChild.data = nameAry[j]; } } } } window.onload = nameRewrite;