9 марта 2010, 18:07

Конвертируем в ASCII неведомые символы для cp1251 и копируем в буфер

Для того что бы конвертить неведомые символы, мы должны их отCharCodить, но функция конвертит всё подряд, поэтому мы предварительно составляем массив наших символов, и если не наши, мы их через ASCII-код выдаём :)

cp1251 = [33,34,35,36,37,38,39,40,41,42,43,44,45,46,48,49,50,51,52,53,54,
	55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,
	76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,93,94,95,96,97,
	98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,
	114,115,116,117,118,119,120,121,122,123,125,126,1025,1028,1030,
	1031,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,
	1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,
	1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,
	1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,
	1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,
	1108,1110,1111,8470];
function in_array(myValue,myArray){
	function equals(a,b){return (a === b);}
	for (var i in myArray) if (equals(myArray[i],myValue)) return true;
	return false;
}
function fetchAscii(){
	var obj = document.getElementById("converter").value,
  convertedObj = '', converted = document.getElementById("converted");
  var _length = obj.length;
  
  for(i = 0; i < _length; i++)
    convertedObj += (in_array(obj.charCodeAt(i),cp1251) ? '&#' : '&amp;#') 
    	+ obj.charCodeAt(i) + ';';
  converted.innerHTML = convertedObj;
  return false;
}  


зы: прикрутил сразу туда же ZeroClipboard :)
var clip = new ZeroClipboard.Client();
clip.setHandCursor( true );
clip.addEventListener('mouseOver', 
	function(clip){
		clip.setText(
			document.getElementById("converted")
			.innerHTML
			.split("&amp;")
			.join("&"))
	}
);
clip.glue("copy");
Особенность в том, что текст, который копируется, постоянно изменяется, то есть динамический %)

1 комментарий РСС

DeerUA
Небольшой ап, добавил пробел и перенос строки и табуляцию ;)
зы: смотрите сорс примера ;)

Ваш комментарий

адрес не будет опубликован

ХТМЛ не работает


Ctrl + Enter