
14.01.2009, 06:31
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
С нами:
10562786
Репутация:
537
|
|
PHP код:
if(!ch||tR.parentElement&&tR.parentElement()! = insField){insPosL = insPosR = s.le ngth;
}
else{ insPosL = tR.text.length;
if(insField.type == 'textarea'){tR1.moveToElementTex t(insField);
tR.setEndPoint('StartToStart',tR1);
insPosR = tR.text .length;
}else{tR.moveStart('textedit',-1);
insPosR = tR.text.length;
}
insPosL = insPosR-insPosL;
//-чрезвычайно хитрое поведение textRange в textarea
}}else{ insPosL = insField.selectionStart;
insPosR = insField.selectionEnd;
if(insBeg&&self.opera&&!insPosL&&!insPosR){insPosL = insPosR = s.length;
insBeg = 0;
}
}var insText = s.substring(insPosL,insPosR);
if((isInSel = selted == insText)&&s3 == 3){isInSel = insText.length;
insText = '';
}
if(d.all)insField.defaultValue = s;
else defa = s;
if(isPic&&!(s3 == 2&&insText! = '')){s2 = s1;
s1 = '';
} //for addressing&picture code
insField.value = s.substring(0,insPosL)+s1+insText+s 2+s.substring(insPosR,s.length);
if(isInSel&&s3 == 3)insPosR- = isInSel;
var insCursor = insPosR+s1.length+(isPic||insPosL! = insPo sR?s2.length:0);
/*for selectional cursor*/var insCursorL = insCursor;
if(s3 == 1){insCursorL = insPosL+s1.length;
insCursor = s 1.length+insPosR;
}//end "for"
var a1 = s.substr(0,s3! = 3?insPosR:insPosR+isInSel).match (/\r\n/g);
if(d.body.createTextRange){setTimeout("var t = insField.createTextRange();
t.collapse();
t.moveEn d('"
+ch+"',"+(insCursor-(a1?a1.length:0))+");
t.moveStart('"+ch+"',"
+(insCursorL-((a1 = s3! = 3?s.substr(0,s3 == 1?insPosL:insPosR).match (/\r\n/g):a1)?a1.length:0))
+");
t.select();
",1);
//-ещё более хитрые поправки последующего выделения текста в IE
да, не пришло в голову. но получается всё равно жуткая херня.
и там кстати ещё есть тернарные операторы четвёртого уровня вложенности.
это тоже ничего не значит?
|
|
|