function emoji(){ var items = document.all.tags("input"); var leng = items.length; for(var i = 0; i < leng; i++){ items[i].value = items[i].value.replace(/&/g, "&").replace(//g, ">"); } el=document.body; var str = el.innerHTML; var check = ""; var i = 0; var change_flag = false; var code; var front = ""; var front_leng = front.length; var rear_leng = rear.length; //一文字のコードを取得 while(!isNaN(check = str.charCodeAt(i++))){ //タグの内部をジャンプ if(check == 60){ //テキストエリアを回避 if(str.substr(i,8).match(/textarea/i)){ i = str.indexOf("<", i+10); }else{ i = str.indexOf(">", i); } continue; } //aaa += (check.toString(16))+"\r\n"; //Docomo 58942 〜 59223 //Au 58472 〜 58847 (AU絵文字第一区間 [絵文字番号No.001 〜 No.376] [16進Unicode E468 〜 e5cc]) //Au 57927 〜 58197 (AU絵文字第二区間 [絵文字番号No.377 〜 No.828] [16進Unicode EA80 〜 EB8E]) //※AU絵文字第二区間について //AU公式のUnicode表では[16進Unicode EA80 〜 EB8E]となっているが、 //実際にJavaScriptで取得できる文字コードは数区間にずれている。 //これはJavaScriptで取得できるUnicodeに画像パスをあわせたほうが良い。 //au 57907〜58847 i-mode 58942 〜 59223 if(check < 57907 || check > 59223)continue; code = check; str = str.slice(0,i-1)+front+(code.toString(16))+rear+str.slice(i); i -= (-front_leng+ -rear_leng + -3);//増えた文字数分移動 change_flag = true; } if(change_flag)el.innerHTML = str; for(var i = 0; i < leng; i++){ items[i].value = items[i].value.replace(/</g, "<").replace(/>/g, ">").replace(/&/g, "&"); } }