Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   как устроены wysiwyg редакторы? (https://javascript.ru/forum/dom-window/11624-kak-ustroeny-wysiwyg-redaktory.html)

Sub-zerro 03.09.2010 19:10

как устроены wysiwyg редакторы?
 
здрасте, есть два вида: редактирование кода - текстареа и визауальный редактор - iframe, не могу понять каким образом в iframe и отображается код преобразованный из текстареа (с визуальными эффекстами) и в тоже время его можно редактировать? спасибо

B@rmaley.e><e 03.09.2010 19:16

Во всем виноваты contentEditable и designMode.
http://tinyurl.com/2fbwmr9

Sweet 03.09.2010 19:58

B@rmaley.e><e, круто посылаешь!:lol:

Sub-zerro 03.09.2010 21:39

вово
B@rmaley.e><e, сенкс

Sub-zerro 03.09.2010 22:01

может быть есть еще какойто способ вывести на страницу текст для редактирования, с возможностью заранее выделить к примеру цветом определенные строки

monolithed 03.09.2010 23:01

Учитесь прикладывать хоть какие-то усилия, для поиска материала:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ru" dir="ltr">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>WYSIWYG</title>
	<style type="text/css">
		iframe {
			border: 2px inset #DDDDDD;
			margin-bottom:5px;
			width:500px;
			height:300px;
		}
		input {
			margin: 3px;
			padding: 2px 8px;
		}
		div {
			margin: 0px auto;
			width:500px;
			height:300px;
			text-align: center;
		}
		#bold {
			font-weight: bold;
		}
		#italic {
			font-style: italic;
		}
		#underline{
			text-decoration: underline;
		}
	</style>
</head>

<body>
<div>
	<h1>WYSIWYG</h1>
	<form name="#" action="#" method="post">
		<input type='button' value='B' id='bold' />
		<input type='button' value='I' id='italic' />
		<input type='button' value='U' id='underline' />
	</form>
	<iframe scrolling='no' frameborder='no' src='#' id='frame' name='frame'></iframe><br/>
</div>
<script type="text/javascript">
(function(){
	function $(id){
		if (typeof id == 'string'){
			return document.getElementById(id)
		}
		return id;
	}
	var isGecko = navigator.userAgent.toLowerCase().indexOf('gecko') != -1;
	var isIframe = (isGecko) ? document.getElementById('frame') : frames['frame'];
	var isWindow = (isGecko) ? isIframe.contentWindow : isIframe.window;
	var isPath = (isGecko) ? isIframe.contentDocument : isIframe.document;
	
	(!isPath.designMode) ? alert("WYSIWYG режим не поддерживается") : isPath.designMode = (isGecko) ? "on" : "On";

	$("bold").onclick = function(){
		isWindow.focus();
		isWindow.document.execCommand("bold", null, "");
	};

	$("italic").onclick = function(){
		isWindow.focus();
		isWindow.document.execCommand("italic", null, "");
	};
	
	$("underline").onclick = function(){
		isWindow.focus();
		isWindow.document.execCommand("underline", null, "");
	};
})();
</script>

</body>
</html>

monolithed 04.09.2010 00:22

не туда запостил, только сейчас заметил :D


Часовой пояс GMT +3, время: 06:18.