<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>deutism &#187; designmode</title>
	<atom:link href="http://mydeute.com/txp/article/tag/designmode/feed" rel="self" type="application/rss+xml" />
	<link>http://mydeute.com/txp</link>
	<description>닥치고 웹 표준</description>
	<lastBuildDate>Sun, 15 Jan 2012 15:56:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>에디터 만들기! 1부</title>
		<link>http://mydeute.com/txp/article/237</link>
		<comments>http://mydeute.com/txp/article/237#comments</comments>
		<pubDate>Fri, 22 May 2009 01:38:12 +0000</pubDate>
		<dc:creator>deute</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[cross browsing]]></category>
		<category><![CDATA[designmode]]></category>
		<category><![CDATA[rich text editor]]></category>

		<guid isPermaLink="false">http://mydeute.com/txp/?p=237</guid>
		<description><![CDATA[요즘 대부분의 게시판이나 블로그툴에는 HTML에디터라고 불리우는 Online Rich Text Editor(이하 RTE) 가 사용되고 있지요. 우연히 허접한 실력으로 만들 기회가 생겨 회사 게시판에 사용되는 에디터를 만들게 되었고 만들면서 느낀점들을 한 두개 정도 공유하려 합니다. 에디터를 만들어 보신분이라면 볼필요도 없는 내용이 될것이고, 저처럼 온갖 삽질을 하던사람에게는 조금 도움이 되지 않을까 생각해 봅니다. 일단 작업을 시작했을때 생각보다 자료가 [...]]]></description>
			<content:encoded><![CDATA[<p>요즘 대부분의 게시판이나 블로그툴에는 HTML에디터라고 불리우는 <a href="http://en.wikipedia.org/wiki/Online_rich-text_editor">Online Rich Text Editor</a>(이하 RTE) 가 사용되고 있지요.<br />
우연히 허접한 실력으로 만들 기회가 생겨 회사 게시판에 사용되는 에디터를 만들게 되었고 만들면서 느낀점들을 한 두개 정도 공유하려 합니다. 에디터를 만들어 보신분이라면 볼필요도 없는 내용이 될것이고, 저처럼 온갖 삽질을 하던사람에게는 조금 도움이 되지 않을까 생각해 봅니다.</p>
<p>일단 작업을 시작했을때 생각보다 자료가 별로가 없었고, 그 마저도 크로스 브라우징 논의 자체가 없었습니다. 그와중에도 이미 <a href="http://xquared.springnote.com/">Xquared</a>나 <a href="http://section.blog.naver.com/BlogEpisode2OpenNews.nhn">Smart Editor</a> 같은 훌륭한 에디터가 나와 있었으나, 소스가 너무 어려웠어요 =_=;;;;</p>
<ul>
<li><a href="http://www.openmaru.com/">openmaru</a>의 Xquared 는 깔끔한 코드를 산출해준다는 장점이 있었습니다. 기존의 에디터는 대부분 HTML4.01를 기준으로 태그를 생성해 주거든요. 그런데 Xquared의 경우는 상당히 깔끔한 XHTML 1.0 베이스의 코드를 만들어주는데 그 장점이 있었습니다. 별것 아닌것처럼 보일지 모르겠지만 저는 아직 그 방법을 완벽히 찾지는 못했거든요. 그외에도 여러 좋은 기술들이 있지만 일단 그 당시 생각한건 저정도&#8230;;</li>
<li><a href="http://nhncorp.com/">NHN</a>의 Smart Editor는 지도나 책 같은 다양한 부가 기능 지원과 레이아웃 지원등 최고의 서비스 회사답게 에디터에 많은 서비스를 담아내었습니다.</li>
<li>외산 에디터도 많습니다만 뭐 FCK Editor가 제일 좋다는 얘기만 들었는데 저는 정이 안가더라구요..(English&#8230;&#8230;&#8230;&#8230;.)</li>
</ul>
<p>첫번째 제 목표는 크로스 브라우징이 었습니다. 마침 4대 브라우저에서(IE5.5, Opera 9.5, Firefox 2+ and Safari 3) 모두 에디터를 만들 수 있다는 소식을 들었거든요.<br />
firefox 에서는 <a href="https://developer.mozilla.org/en/Midas">midas</a>라는 코드네임을 가진 프로젝트의 형태로서 지원을 했습니다. 저는 <a href="http://www.mozilla.org/editor/midasdemo/">데모화면</a>을 보면서 희망을 가지기 시작했어요.</p>
<p>이제 에디터가 무엇이라는것은 알았으니 맨땅에 헤딩만 하면되겠죠? 자 이제 삽질 시작됩니다.<br />
제가 좀 찾아보니 에디터는 자바스크립트를 이용하여 페이지의 designmode 라는 속성으로 출발을 하게 됩니다.<br />
쉽게 말해서  문서를 직접 디자인 할수있게 만들어 주는 속성이 랄까요? designmode는 HTML의 속성은 아닙니다. 표준속성도 아닐거구요. 그래서 스크립트로 접근을 해주어야 합니다.<br />
iframe을 designmode 로 변경을 해줌으로써 iframe내의 문서를 편집 할 수 있게 되는거죠. 자바스크립트를 잘 모르시는분들도 차근차근 따라하면 쉬울것이라 생각되는데요?<br />
만약에 iframe의 id속성 값이 &#8220;editWindow&#8221; 라고 한다면, 일단 iframe에 접근을 해야하니 제일많이 보는 getElementById()를 이용하는게 속편하겠죠?</p>
<blockquote><p>document.getElementById(&#8220;editWindow&#8221;) //iframe으로 접근!</p></blockquote>
<p>iframe 안에 우리는 글을 쓸것이니 프레임내의 document 부분으로 접근을해야겠죠? iframe내의 document는 접근하는방법이 약간다릅니다. 아래의 코드가 정답이라고 보시면됩니다.</p>
<blockquote><p>document.getElementById(&#8220;editWindow&#8221;).contentWindow.document.designMode = &#8220;on&#8221;;</p></blockquote>
<p>로 지정을 해주면 해당 iframe은 수정 할 수 있는 iframe, 즉 에디터가 됩니다. 쉽죠? 에디터가 이렇게 완성되었습니다. =_=/<br />
참고로 풀소스를 한번볼까요?</p>
<blockquote><p>&lt;!DOCTYPE html PUBLIC &#8220;-//W3C//DTD XHTML 1.0 Transitional//EN&#8221;    &#8220;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&#8221;&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;에디터 만들기&lt;/title&gt;<br />
&lt;style type=&#8221;text/css&#8221;&gt;<br />
iframe { width:500px;height:400px; }<br />
&lt;/style&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;iframe id=&#8221;editWindow&#8221;&gt;&lt;/iframe&gt;<br />
&lt;script type=&#8221;text/javascript&#8221;&gt;<br />
document.getElementById(&#8220;editWindow&#8221;).contentWindow.document.designMode = &#8220;on&#8221;;<br />
&lt;/script&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p></blockquote>
<p>아 진짜 간단합니다.</p>
<p>참고로 contentWindow는 frame이나 iframe의 window를 나타나는 개체입니다. IE의 경우에는 생략이 되어도 상관없지만 기타 브라우저에서는 꼭 필요한 속성 입니다. 이걸 몰라서 에디터는 IE만 된다고 하는사람도 있었을 정도니까요:)</p>
<p>이제 에디터 영역은 만들었으니 각종 스타일이나 이런것을 넣을수 있어야 겠죠?<br />
그건 다음시간으로 넘어갑시다~ 캬캬캬캬캬캬캬캬</p>
<p>참고로 이글은 에디터를 만드는데만 포커스가 맞춰져있습니다. 에디터에 대한 즐거운 생각, 더나은 에디터의 컨셉 등은 다음글을 보시는게 도움이 될듯합니다.</p>
<ol>
<li><a class="postsubject" href="http://resistan.com/what-is-web-editor-3/"><span class="posttime">[2008년 3월 13일]</span> 웹 에디터, 어떻게 만들어야 할까 III</a></li>
<li><a class="postsubject" href="http://resistan.com/what-is-web-editor-2/"><span class="posttime">[2007년 9월 20일]</span> 웹 에디터, 어떻게 만들어야 할까 II</a></li>
<li><a class="postsubject" href="http://resistan.com/what-is-web-editor-1/"><span class="posttime">[2007년 8월 22일]</span> 웹 에디터, 어떻게 만들어야 할까 I</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://mydeute.com/txp/article/237/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

