Показать сообщение отдельно
  #3 (permalink)  
Старый 14.05.2011, 11:57
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Маэстро,
А что, если подойти совсем с другой стороны и «гасить» defaultAction у mousedown на textarea, если на той нет фокуса? При переходе по Tab-то выделение сохраняется нормально.

<script type="text/javascript">
(function(){
	function handleBlur(e){
		var trigger =  e.srcElement || e.target;
		if (trigger && trigger.tagName.toLowerCase() == "textarea" && (trigger.getAttribute("lockedselection")||"").toLowerCase() == "true"){
			trigger.skipClickEvent = true;
		};
	};
	function handleFocus(e){
		var trigger =  e.srcElement || e.target;
		if (trigger && trigger.skipClickEvent && trigger.tagName.toLowerCase() == "textarea"){
			trigger.skipClickEvent = false;
		};
	};
	function handleMousedown(e){
		var trigger =  e.srcElement || e.target;
		if (trigger && trigger.skipClickEvent && trigger.tagName.toLowerCase() == "textarea"){
			trigger.skipClickEvent = false;
			if (e.preventDefault) e.preventDefault();
			e.returnValue = false;
			trigger.focus();
		};
	};
	if (document.addEventListener){
		document.addEventListener("blur", handleBlur, true);
		document.addEventListener("focus", handleFocus, true);
		document.addEventListener("mousedown", handleMousedown, false);
	} else if (document.attachEvent){
		document.attachEvent("onbeforedeactivate", handleBlur);
		document.attachEvent("onbeforeactivate", handleFocus);
		document.attachEvent("onmousedown", handleMousedown);
	};
})();
</script>


<div><textarea lockedselection="true">В этой текстарии выделение будет «заблокировано»</textarea></div>
<div><textarea lockedselection="true">И в этой</textarea></div>
<div><textarea>А в этой нет</textarea></div>


Но вот беда. Кажется, IE 6—8 не сохраняет выделение на текстарии.
Ответить с цитированием