<?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>겨미♡웹 &#187; Markup</title>
	<atom:link href="http://miya.pe.kr/tag/markup/feed/" rel="self" type="application/rss+xml" />
	<link>http://miya.pe.kr</link>
	<description>웹 클라이언트 사이드 - UI 그리고 마크업.</description>
	<lastBuildDate>Tue, 24 Jan 2012 07:16:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>중복되는 URL을 위해 Canonical Link 요소를 넣어주세요.</title>
		<link>http://miya.pe.kr/2009/03/02/%ec%a4%91%eb%b3%b5%eb%90%98%eb%8a%94-url%ec%9d%84-%ec%9c%84%ed%95%b4-canonical-link-%ec%9a%94%ec%86%8c%eb%a5%bc-%eb%84%a3%ec%96%b4%ec%a3%bc%ec%84%b8%ec%9a%94/</link>
		<comments>http://miya.pe.kr/2009/03/02/%ec%a4%91%eb%b3%b5%eb%90%98%eb%8a%94-url%ec%9d%84-%ec%9c%84%ed%95%b4-canonical-link-%ec%9a%94%ec%86%8c%eb%a5%bc-%eb%84%a3%ec%96%b4%ec%a3%bc%ec%84%b8%ec%9a%94/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 08:38:01 +0000</pubDate>
		<dc:creator>김군우</dc:creator>
				<category><![CDATA[Markup]]></category>
		<category><![CDATA[canonical]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[link]]></category>

		<guid isPermaLink="false">http://miya.pe.kr/?p=107</guid>
		<description><![CDATA[http://example.com/page.html, http://example.com/page.html?param1=1, http://www.example.com/page.html 등 한 문서를 가리키는 여러 URL은 검색엔진에 심각한 중복 문제를 안겨줍니다. 최근 구글, 야후, 마이크로소프트가 이를 해결할 수 있는 방법을 제시하였습니다. &#60;link rel=&#34;canonical&#34; href=&#34;http://example.com/page.html&#34; /&#62; 위의 코드를 넣어주면 끝입니다. 간단하죠? 단어 그대로 표준 혹은 대표 링크를 선언해주는 것입니다. 이미 많은 발표자료, 동영상 등이 공개되어 있네요. 보시죠~ 참고로 첫 링크만 보시면 정리가 다 [...]]]></description>
			<content:encoded><![CDATA[<p>http://example.com/page.html, http://example.com/page.html?param1=1, http://www.example.com/page.html 등 한 문서를 가리키는 여러 URL은 검색엔진에 심각한 중복 문제를 안겨줍니다. 최근 구글, 야후, 마이크로소프트가 이를 해결할 수 있는 방법을 제시하였습니다.</p>
<p>
<pre><code class="html">&lt;link rel=&quot;canonical&quot; href=&quot;http://example.com/page.html&quot; /&gt;</code></pre>
</p>
<p>위의 코드를 넣어주면 끝입니다. 간단하죠? 단어 그대로 표준 혹은 대표 링크를 선언해주는 것입니다. 이미 많은 발표자료, 동영상 등이 공개되어 있네요. 보시죠~ 참고로 첫 링크만 보시면 정리가 다 됩니다. :)</p>
<ul>
<li><a href="http://www.mattcutts.com/blog/canonical-link-tag/">Learn about the Canonical Link Element in 5 minutes</a></li>
<li><a href="http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html">Specify your canonical</a> &#8211; Google Webmaster Central Blog</li>
<li><a href="http://ysearchblog.com/2009/02/12/fighting-duplication-adding-more-arrows-to-your-quiver/">Fighting Duplication: Adding more arrows to your quiver</a> &#8211; Yahoo! Search Blog</li>
<li><a href="http://blogs.msdn.com/webmaster/archive/2009/02/12/partnering-to-help-solve-duplicate-content-issues.aspx">Partnering to help solve duplicate content issues</a> &#8211; MS Live Search Webmaster Center Blog</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://miya.pe.kr/2009/03/02/%ec%a4%91%eb%b3%b5%eb%90%98%eb%8a%94-url%ec%9d%84-%ec%9c%84%ed%95%b4-canonical-link-%ec%9a%94%ec%86%8c%eb%a5%bc-%eb%84%a3%ec%96%b4%ec%a3%bc%ec%84%b8%ec%9a%94/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Aptana에 TextMate의 Wrap Selection, Wrap Selection Each Line 기능 추가하기</title>
		<link>http://miya.pe.kr/2008/06/16/aptana%ec%97%90-textmate%ec%9d%98-wrap-selection-wrap-selection-each-line-%ea%b8%b0%eb%8a%a5-%ec%b6%94%ea%b0%80%ed%95%98%ea%b8%b0/</link>
		<comments>http://miya.pe.kr/2008/06/16/aptana%ec%97%90-textmate%ec%9d%98-wrap-selection-wrap-selection-each-line-%ea%b8%b0%eb%8a%a5-%ec%b6%94%ea%b0%80%ed%95%98%ea%b8%b0/#comments</comments>
		<pubDate>Mon, 16 Jun 2008 14:15:14 +0000</pubDate>
		<dc:creator>김군우</dc:creator>
				<category><![CDATA[Markup]]></category>
		<category><![CDATA[aptana]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[textmate]]></category>

		<guid isPermaLink="false">http://miya.pe.kr/?p=85</guid>
		<description><![CDATA[TextMate의 강력한 기능 중 하나인 HTML의 Wrap Selection, Wrap Selection Each Line 기능을 Aptana에 추가하는 방법을 소개한다. 기능 소개 Wrap Selection, Wrap Selection Each Line은 리스트 마크업 &#8211; &#60;ul&#62;, &#60;ol&#62; &#8211; 을 작성할 수 있게 해주는 TextMate의 기능이다. 텍스트를 복사해넣은 후 각 줄의 시작과 끝에 &#60;li&#62; 태그를 넣는 수고를 크게 덜어주는 편리한 기능이다. Aptana에 기능 [...]]]></description>
			<content:encoded><![CDATA[<p><a xml:lang="en" lang="en" href="http://macromates.com/">TextMate</a>의 강력한 기능 중 하나인 <abbr title="Hypertext Markup Language" xml:lang="en" lang="en">HTML</abbr>의 <span xml:lang="en" lang="en">Wrap Selection, Wrap Selection Each Line</span> 기능을
<a xml:lang="en" lang="en" href="http://aptana.com/">Aptana</a>에 추가하는 방법을 소개한다.</p>

<h3>기능 소개</h3>

<p><span xml:lang="en" lang="en">Wrap Selection, Wrap Selection Each Line</span>은 리스트 마크업 &#8211; <code xml:lang="en" lang="en">&lt;ul&gt;</code>, <code xml:lang="en" lang="en">&lt;ol&gt;</code> &#8211; 을
작성할 수 있게 해주는 <span xml:lang="en" lang="en">TextMate</span>의 기능이다.
텍스트를 복사해넣은 후 각 줄의 시작과 끝에 <code xml:lang="en" lang="en">&lt;li&gt;</code> 태그를 넣는 수고를 크게 덜어주는 편리한 기능이다.</p>

<h3><span xml:lang="en" lang="en">Aptana</span>에 기능 추가</h3>

<ol>
    <li><p>운영체제에 맞는 스크립트 압축파일을 다운로드 받는다.</p>
        <ul>
            <li><a href="/download/aptana_wrap_selection/aptana_wrap_selection_win_unix.zip">
                윈도우(<span xml:lang="en" lang="en">Windows</span>), 유닉스 계열(<span xml:lang="en" lang="en">Unix, Linux, &hellip;</span>)용 <span xml:lang="en" lang="en">Aptana Wrap Selection</span> 스크립트</a></li>
            <li><a href="/download/aptana_wrap_selection/aptana_wrap_selection_mac.zip">
                맥(<span xml:lang="en" lang="en">Mac</span>)용 <span xml:lang="en" lang="en">Aptana Wrap Selection</span> 스크립트</a></li>
        </ul>
    </li>
    <li><strong xml:lang="en" lang="en">scripts</strong> 혹은 <strong xml:lang="en" lang="en">monkey</strong>라는 이름으로
        존재하는 프로젝트 중 하나의 최상위에 폴더를 만들고 다운 받은 스크립트 파일들을 이동시킨다.</li>
</ol>

<h3>기능 시험해보기</h3>

<p>맥의 경우 <strong xml:lang="en" lang="en">Command + Ctrl + W</strong> 키 조합이 선택한 텍스트 전체를 하나의 태그로 감싸는 기능이고,
<strong xml:lang="en" lang="en">Command + Ctrl + Shift + W</strong> 키 조합이 선택한 텍스트의 각 줄을 지정한 태그로 감싸는 기능이다.
맥이 아닐 경우 <span xml:lang="en" lang="en">Command</span> 키 대신 <strong xml:lang="en" lang="en">Alt</strong> 키를 조합하면 된다.</p>

<ol>
    <li><p><img alt="" src="/images/2008/aptana-wrap-selection/step1.gif" /><br />몇 줄의 텍스트를 준비한다.</p></li>
    <li><p><img alt="" src="/images/2008/aptana-wrap-selection/step2.gif" /><br /><strong xml:lang="en" lang="en">Command(or Alt) + Ctrl + Shift + W</strong> 키 &#8211; <span xml:lang="en" lang="en">Wrap Selection Each Line</span> &#8211; 를 누른다.</p></li>
    <li><p><img alt="" src="/images/2008/aptana-wrap-selection/step3.gif" /><br />기본으로 설정되어 있는 <code xml:lang="en" lang="en">li</code> 태그를 확인 후 엔터를 누른 후 각 줄이 <code xml:lang="en" lang="en">li</code> 태그로 쌓인 것을 확인</p></li>
    <li><p><img alt="" src="/images/2008/aptana-wrap-selection/step4.gif" /><br /><strong xml:lang="en" lang="en">Command(or Alt) + Ctrl + W</strong> 키 &#8211; <span xml:lang="en" lang="en">Wrap Selection</span> &#8211; 를 누른다.</p></li>
    <li><p><img alt="" src="/images/2008/aptana-wrap-selection/step5.gif" /><br />기본으로 설정되어 있는 <code xml:lang="en" lang="en">ul</code> 태그를 확인 후 엔터를 누른 후 전체가 <code xml:lang="en" lang="en">ul</code> 태그로 쌓인 것을 확인</p></li>
</ol>

<h3>스크립트 추가하기</h3>

<p><span xml:lang="en" lang="en">Aptana</span>를 좀 더 강력하게 해주는 <strong xml:lang="en" lang="en">Eclipse Monkey Script</strong>는 간단하게 작성하고 추가할 수 있다. <a href="http://www.aptana.com/docs/index.php/About_Eclipse_Monkey"><span xml:lang="en" lang="en">Aptana</span> 홈페이지의 <span xml:lang="en" lang="en">Eclipse Monkey</span> 관련 페이지</a> 혹은 필자가 작성한 스크립트를 보면
자바 스크립트를 조금 다뤄본 사람이면 어렵지 않게 자신이 원하는 기능을 추가할 수 있을 것이다.</p>
]]></content:encoded>
			<wfw:commentRss>http://miya.pe.kr/2008/06/16/aptana%ec%97%90-textmate%ec%9d%98-wrap-selection-wrap-selection-each-line-%ea%b8%b0%eb%8a%a5-%ec%b6%94%ea%b0%80%ed%95%98%ea%b8%b0/feed/</wfw:commentRss>
		<slash:comments>687</slash:comments>
		</item>
		<item>
		<title>정보로서가 아닌 정보를 꾸며주기 위해 사용하는 &lt;img&gt; 태그, 그리고 이미지 대치법(Image Replacement)</title>
		<link>http://miya.pe.kr/2008/04/22/%ec%a0%95%eb%b3%b4%eb%a1%9c%ec%84%9c%ea%b0%80-%ec%95%84%eb%8b%8c-%ec%a0%95%eb%b3%b4%eb%a5%bc-%ea%be%b8%eb%a9%b0%ec%a3%bc%ea%b8%b0-%ec%9c%84%ed%95%b4-%ec%82%ac%ec%9a%a9%ed%95%98%eb%8a%94-img/</link>
		<comments>http://miya.pe.kr/2008/04/22/%ec%a0%95%eb%b3%b4%eb%a1%9c%ec%84%9c%ea%b0%80-%ec%95%84%eb%8b%8c-%ec%a0%95%eb%b3%b4%eb%a5%bc-%ea%be%b8%eb%a9%b0%ec%a3%bc%ea%b8%b0-%ec%9c%84%ed%95%b4-%ec%82%ac%ec%9a%a9%ed%95%98%eb%8a%94-img/#comments</comments>
		<pubDate>Mon, 21 Apr 2008 17:34:43 +0000</pubDate>
		<dc:creator>김군우</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Markup]]></category>
		<category><![CDATA[웹 접근성]]></category>
		<category><![CDATA[웹 표준]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Image Replacement]]></category>
		<category><![CDATA[img]]></category>
		<category><![CDATA[마크업]]></category>
		<category><![CDATA[이미지]]></category>
		<category><![CDATA[이미지 대치법]]></category>

		<guid isPermaLink="false">http://miya.pe.kr/?p=77</guid>
		<description><![CDATA[현 시대의 CSS로는 마크업의 무결성을 보장하면서 원하는 표현을 충분히 할 수 없다. 그 대표적인 예가 폰트와 배경이미지이다. 그 중에서도 폰트와 같은 경우는 기본 텍스트만으로는 원하는 결과물을 얻기가 힘들다. 이럴 때 우리가 가장 많이 사용하는 방식이 &#60;img&#62; 태그 혹은 이미지 대치법(Image Replacement)이다. 정보를 꾸며주기 위한 &#60;img&#62; 태그 &#60;img&#62; 태그는 사전적으로는 정보를 지닌 &#8211; 의미 있는 &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>현 시대의 <abbr title="Cascading Style Sheet">CSS</abbr>로는 마크업의 무결성을 보장하면서 원하는 표현을 충분히 할 수 없다. 그 대표적인 예가 <a href="http://miya.pe.kr/archives/74">폰트</a>와 <a href="http://miya.pe.kr/archives/72">배경이미지</a>이다. 그 중에서도 폰트와 같은 경우는 기본 텍스트만으로는 원하는 결과물을 얻기가 힘들다. 이럴 때 우리가 가장 많이 사용하는 방식이 <code class="html">&lt;img&gt;</code> 태그 혹은 이미지 대치법(Image Replacement)이다.</p>

<h3>정보를 꾸며주기 위한 <code class="html">&lt;img&gt;</code> 태그</h3>

<p><code class="html">&lt;img&gt;</code> 태그는 사전적으로는 정보를 지닌 &#8211; 의미 있는 &#8211; 시각 요소를 문서에 삽입하기 위한 태그이지만, 앞서 언급한 표현의 제약으로 인해 폰트 등을 원하는 대로 표현하기 위한 용도로 사용하기도 하다. 예전부터 &#8211; 대다수의 웹 제작자들이 마크업을 표현을 위한 용도로 사용하던 시절부터 &#8211; 국내의 거의 모든 사이트들이 사용하는 방법이기도 하다.</p>

<h4>문제점</h4>

<p>우선 <strong><code class="html">&lt;img&gt;</code> 태그의 남용이 마크업의 의미를 떨어뜨린다</strong>. 단순 텍스트와 <code class="html">&lt;img&gt;</code> 태그는 기본적으로 의미하는 바가 다르다. <strong>이미지 검색엔진의 결과물로 나타나는 수많은 텍스트 꾸밈용 이미지들을 보면 <code class="html">&lt;img&gt;</code> 태그의 남용이 잘못된 마크업이라는 생각을 할 수 있다</strong>.</p>

<p>또, 남용된 <code class="html">&lt;img&gt;</code> 태그는 <strong>구조와 표현의 분리라는 CSS의 목적을 달성하는 데 장애물이 된다</strong>. 마크업에 박혀있는 특정 시각 디자인 결과물을 위한 <code class="html">&lt;img&gt;</code> 태그들은 다양한 표현의 걸림돌이다. <code class="html">&lt;img&gt;</code> 태그가 남용된 사이트에서 프린트를 위한 CSS를 제작한다면 그 결과물은 어쩔 수 없이 스크린의 그것에서 크게 달라질 수 없을 것이다. 스크린 디자인을 위해 사용된 <code class="html">&lt;img&gt;</code> 태그의 모양새는 바꾸기가 어렵기 때문이다.</p>

<h3>CSS를 이용한 이미지 대치법(Image Replacement)</h3>

<h4>문제점</h4>

<p>앞서 언급한것처럼 <code class="html">&lt;img&gt;</code> 태그는 많은 문제점이 있지만 CSS를 이용한 이미지 대치법 역시 많은 문제를 가지고 있다. 가장 대표적으로 대다수의 이미지 대치법이 텍스트를 숨기거나(<code class="css">display: none;</code>) 화면 밖으로 위치시키는 방법(<code class="css">text-indent: -999em;</code>)을 사용하기 때문에 <strong>CSS 활성화·이미지 비활성화 상태에서 화면 상에 아무것도 출력하지 못하며</strong> 이 방법을 프린트용 CSS에 동일하게 적용하였을 때 보통의 웹 브라우저들이 기본적으로 배경 이미지를 출력하지 않기 때문에 <strong>백지 상태의 인쇄물을 보게되는 경우가 생긴다.</strong> (<code class="html">&lt;img&gt;</code> 태그 사용시에는 사용자가 의도하지 않은 사이에 프린터의 잉크나 토너가 낭비된다!)</p>

<h4>약간의 해결책</h4>

<p>CSS 활성화·이미지 비활성화 상태의 경우 <a href="http://www.mezzoblue.com/tests/revised-image-replacement/#gilderlevin">Gilder/Levin의 방법</a>이나 <a href="http://www.ryznardesign.com/web_coding/image_replacement/index.html#glrj">Gilder Levin Ryznar Jacoubsen의 방법</a>을 통해 해결할 수 있다. 하지만 이 방법은 이미지 뒤에 가려진 텍스트가 표시될 수 있는 충분한 공간이 확보되지 않으면 무용지물이 될 수 있다. <a href="http://www.nmindplus.com/2006/09/24/z-index/">z-index를 이용한 이미지 대치법</a>도 하나의 방법인데 대치할 요소의 부모 요소에 배경색이 들어가있거나 한 경우에 문제가 생길 수 있다. 그리고 앞의 방법들과 마찬가지로 텍스트의 공간에 대한 문제가 있다. 그리고 이 모든 방법들은 <strong>의미없는 추가적인 마크업을 필요</strong>로 한다.</p>

<p>프린트 시의 문제는? 프린트용 CSS를 별도로 제작하면 바로 해결된다. 설마 로고와 메뉴가 덕지덕지 붙은 화면을 사용자에게 그대로 출력시키게 하는 것을 그냥 지켜보고 있다면 바로 당신이 관리하는 사이트에 프린트용 CSS를 추가하라.</p>

<h3>어떤 것을 선택하느냐?</h3>

<p><code class="html">&lt;img&gt;</code> 태그, 이미지 대치법(Image Replace). <strong>이 방법들 중 어떤 것도 완벽하지 않다</strong>. 다만 각 방법들이 서로 다른 문제를 가지고 있고 어떤 것을 선택하느냐에 앞서 이 방법들의 문제점들에 대해 이해한 후에 선택하는 것이 필요하다.</p>
]]></content:encoded>
			<wfw:commentRss>http://miya.pe.kr/2008/04/22/%ec%a0%95%eb%b3%b4%eb%a1%9c%ec%84%9c%ea%b0%80-%ec%95%84%eb%8b%8c-%ec%a0%95%eb%b3%b4%eb%a5%bc-%ea%be%b8%eb%a9%b0%ec%a3%bc%ea%b8%b0-%ec%9c%84%ed%95%b4-%ec%82%ac%ec%9a%a9%ed%95%98%eb%8a%94-img/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>여러 개의 제출 버튼을 가진 폼, &lt;button&gt; 태그도 사용할 수 있다!</title>
		<link>http://miya.pe.kr/2008/01/04/%ec%97%ac%eb%9f%ac-%ea%b0%9c%ec%9d%98-%ec%a0%9c%ec%b6%9c-%eb%b2%84%ed%8a%bc%ec%9d%84-%ea%b0%80%ec%a7%84-%ed%8f%bc-button-%ed%83%9c%ea%b7%b8%eb%8f%84-%ec%82%ac%ec%9a%a9%ed%95%a0-%ec%88%98/</link>
		<comments>http://miya.pe.kr/2008/01/04/%ec%97%ac%eb%9f%ac-%ea%b0%9c%ec%9d%98-%ec%a0%9c%ec%b6%9c-%eb%b2%84%ed%8a%bc%ec%9d%84-%ea%b0%80%ec%a7%84-%ed%8f%bc-button-%ed%83%9c%ea%b7%b8%eb%8f%84-%ec%82%ac%ec%9a%a9%ed%95%a0-%ec%88%98/#comments</comments>
		<pubDate>Fri, 04 Jan 2008 01:08:50 +0000</pubDate>
		<dc:creator>김군우</dc:creator>
				<category><![CDATA[Markup]]></category>
		<category><![CDATA[웹 접근성]]></category>
		<category><![CDATA[웹 표준]]></category>
		<category><![CDATA[button]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[IE]]></category>

		<guid isPermaLink="false">http://www.miya.pe.kr/archives/67</guid>
		<description><![CDATA[여러 개의 제출 버튼을 가진 폼의 접근성에 대하여 이야기를 하였었는데 결론은 &#60;input&#62; 태그가 제한적이나마 사용될 수 있다는 것이었다. 좀 더 풍부한 표현이 가능한 &#60;button&#62; 태그가 IE에서 버그를 가지고 있는 관계로 사용할 수 없다고 하였었는데 그게 어느정도 가능할 수 있다는 결론을 얻었다. 자바스크립트를 통한 IE의 &#60;button&#62; 태그 버그 극복 &#60;button&#62; 태그가 IE에서만 문제가 되고 있고 IE는 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.miya.pe.kr/archives/40">여러 개의 제출 버튼을 가진 폼의 접근성</a>에 대하여 이야기를 하였었는데 결론은 &lt;input&gt; 태그가 제한적이나마 사용될 수 있다는 것이었다. 좀 더 풍부한 표현이 가능한 &lt;button&gt; 태그가 IE에서 버그를 가지고 있는 관계로 사용할 수 없다고 하였었는데 그게 어느정도 가능할 수 있다는 결론을 얻었다.</p>
<h3>자바스크립트를 통한 IE의 &lt;button&gt; 태그 버그 극복</h3>
<p>&lt;button&gt; 태그가 IE에서만 문제가 되고 있고 IE는 특별한 조치 없이는 자바스크립트를 기본적으로 사용하기 때문에 자바스크립트를 통해 IE의 버그를 극복할 수 있다고 생각되었다. 그래서 찾아보니 <a href="http://www.kopz.org/public/documents/css/multiple_buttons_ie_workaround.html" hreflang="en" lang="en">Multiple Buttons IE Workaround</a>라는 글이 있었다. 이 글이 제시하는 방법은 버튼을 클릭할 때 value 속성(값)을 IE의 버그로 인한 값에서 정상적인 값으로 돌려주는 것이었는데 이것은 폼의 제출 시에는 정상적으로 작동할 수 있으나 <a href="/examples/ie-button-fix/kopz_example.php" title="kopz.org가 제시한 방식의 예제">onsubmit 이벤트에서 폼 제출을 중지하는 경우</a> 등의 상황에서 얘기치 않은 결과를 가져왔다.</p>
<h3>IE Button Fix</h3>
<p>그래서 위의 단점들을 해결하고 여전히 문제를 가지고 있던 IE5까지 해결한 <a href="/document/ie-button-fix">IE Button Fix</a>를 만들었다. 문제를 해결하면서 <a href="/document/ie-button-fix#restriction">새로운 제약사항</a>이 생겼는데 이는 사용시에 사용할 웹 사이트의 성격과 제약사항을 잘 파악하여 사용여부를 판단할 수 있을 것이다.</p>
<p><a href="http://particletree.com/features/rediscovering-the-button-element/">&lt;button&gt; 태그는 &lt;input&gt; 태그에 비해 많은 장점을 갖는다.</a> IE의 버그는 그 동안 이래저래 &lt;button&gt; 태그의 장점을 사용할 수 없도록 제한해왔지만 <a href="/document/ie-button-fix">IE Button Fix</a>가 이를 어느정도 보완해줄 수 있으리라 생각한다.</p>
]]></content:encoded>
			<wfw:commentRss>http://miya.pe.kr/2008/01/04/%ec%97%ac%eb%9f%ac-%ea%b0%9c%ec%9d%98-%ec%a0%9c%ec%b6%9c-%eb%b2%84%ed%8a%bc%ec%9d%84-%ea%b0%80%ec%a7%84-%ed%8f%bc-button-%ed%83%9c%ea%b7%b8%eb%8f%84-%ec%82%ac%ec%9a%a9%ed%95%a0-%ec%88%98/feed/</wfw:commentRss>
		<slash:comments>262</slash:comments>
		</item>
		<item>
		<title>겸손한 자바스크립트의 기본</title>
		<link>http://miya.pe.kr/2007/11/25/%ea%b2%b8%ec%86%90%ed%95%9c-%ec%9e%90%eb%b0%94%ec%8a%a4%ed%81%ac%eb%a6%bd%ed%8a%b8%ec%9d%98-%ea%b8%b0%eb%b3%b8/</link>
		<comments>http://miya.pe.kr/2007/11/25/%ea%b2%b8%ec%86%90%ed%95%9c-%ec%9e%90%eb%b0%94%ec%8a%a4%ed%81%ac%eb%a6%bd%ed%8a%b8%ec%9d%98-%ea%b8%b0%eb%b3%b8/#comments</comments>
		<pubDate>Sun, 25 Nov 2007 14:23:49 +0000</pubDate>
		<dc:creator>김군우</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Markup]]></category>
		<category><![CDATA[웹 접근성]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[겸손한 자바스크립트]]></category>
		<category><![CDATA[마크업]]></category>
		<category><![CDATA[자바스크립트]]></category>

		<guid isPermaLink="false">http://www.miya.pe.kr/archives/21</guid>
		<description><![CDATA[겸손한 자바스크립트의 사전적인 의미는 문서(HTML)와 동작(자바스크립트)를 분리하는 것이지만, 그 이전에 기본은 자바스크립트를 사용하는 모든 경우에 대해 사용 가능한 경우와 가능하지 않은 경우를 염두하여 설계하는 것이다. 웹 페이지를 제작하면서 자바스크립트를 어떤 부분에 사용해야겠다라고 마음 먹으면 우리는 자바스크립트를 표시하는 &#60;script&#62; 태그를 쓴다. 앞서 얘기한 설계대로 &#60;script&#62; 태그의 사용 가능하지 않은 경우를 위해 &#60;noscript&#62; 태그를 쓸 수 있다. [...]]]></description>
			<content:encoded><![CDATA[<p>겸손한 자바스크립트의
    <ins datetime="2008-04-25T04:30:00+09:00">사전적인 의미는 문서(<abbr title="Hypertext Markup Language">HTML</abbr>)와 동작(자바스크립트)를
        분리하는 것이지만, 그 이전에</ins>
    기본은 <strong>자바스크립트를 사용하는 모든 경우에 대해 사용 가능한 경우와 가능하지 않은 경우를 염두하여 설계하는 것</strong>이다.</p>

<p>웹 페이지를 제작하면서 자바스크립트를 어떤 부분에 사용해야겠다라고 마음 먹으면
    우리는 자바스크립트를 표시하는 &lt;script&gt; 태그를 쓴다.
    앞서 얘기한 설계대로 &lt;script&gt; 태그의 사용 가능하지 않은 경우를 위해 &lt;noscript&gt; 태그를 쓸 수 있다.
    어플리케이션 레벨이 아닌 마크업이 잘 되어 정상적인 기능을 하는
<abbr title="Hypertext Markup Language">HTML</abbr> 문서에 부가적인 사용자 편의성의 증대를 목적으로
    사용하는 자바스크립트라면 &lt;script&gt; 태그가 동작하지 않을 경우
    자바스크립트가 없는 <abbr title="Hypertext Markup Language">HTML</abbr> 문서와 같이 작동하게 되므로
    굳이 &lt;noscript&gt; 태그가 필요하지 않을 것이다.</p>

<ins datetime="2008-04-25T04:30:00+09:00">
    <p>다음의 두 코드를 보자. 직업을 입력하지 않았을 때 오류메시지를 표시하는 스크립트를 삽입한 폼이다.</p>
    <pre><code class="html">&lt;form action=&quot;insert&quot; id=&quot;f&quot;&gt;
    &lt;fieldset&gt;
        &lt;label for=&quot;yourjob&quot;&gt;당신의 직업&lt;/label&gt;
        &lt;input type=&quot;text&quot; name=&quot;job&quot; id=&quot;yourjob&quot; /&gt;
        <strong>&lt;a href=&quot;javascript:checkForm();&quot;&gt;전송&lt;/a&gt;</strong>
    &lt;/fieldset&gt;
&lt;/form&gt;

&lt;script type=&quot;text/javascript&quot;&gt;
// &lt;![CDATA[
function checkForm() {
    var form = document.getElementById(&quot;f&quot;);
    if (form.elements[&quot;job&quot;].value == &quot;&quot;) {
        alert(&quot;직업을 입력해주세요.&#038;quot);
    } else {
        form.submit();
    };
};
// ]]&gt;
&lt;/script&gt;</code></pre>
    <pre><code class="html">&lt;form action=&quot;insert&quot; id=&quot;f&quot;&gt;
    &lt;fieldset&gt;
        &lt;label for=&quot;yourjob&quot;&gt;당신의 직업&lt;/label&gt;
        &lt;input type=&quot;text&quot; name=&quot;job&quot; id=&quot;yourjob&quot; /&gt;
        &lt;input type=&quot;submit&quot; value=&quot;전송&quot; /&gt;
    &lt;/fieldset&gt;
&lt;/form&gt;

&lt;script type=&quot;text/javascript&quot;&gt;
// &lt;![CDATA[
if (document.getElementById &amp;&amp; document.getElementById(&quot;f&quot;)) {
    var form = document.getElementById(&quot;f&quot;);
    form.onsubmit = function() {
        if (this.elements[&quot;job&quot;].value == &quot;&quot;) {
            alert(&quot;직업을 입력해주세요.&#038;quot);
            return false;
        };
    };
};
// ]]&gt;
&lt;/script&gt;</code></pre>
    <p>전자는 자바스크립트를 제거하였을 때 아무런 동작을 하지 않는 예제이고
        후자는 <abbr title="Hypertext Markup Language">HTML</abbr>에 선언된 링크로 이동할 수 있는 예제이다.
    <strong>어떤 코드를 작성하던 비슷한 시간이 소요</strong>되겠지만 &#8211; 학습에 필요한 시간은 제외한다. -
        전자의 경우 <strong>문서의 가치가 훨씬 떨어진다</strong>.</p>
</ins>

<p>모든 사용자가 당신의 자바스크립트 코드를 실행할 수 있을 것이라고 기대하지 말아야 한다.
    또, 어떤 사용자는 당신의 자바스크립트 코드 중 어떤 부분을 제대로 해석하지 못한다는 것을 알아야 한다.</p>

<p>자바스크립트는 플래시, ActiveX와 같은 외부 플러그인과 개념 상 다르지 않다.
    오히려 언급한 것처럼 사용자에 따라 불완전하게 실행될 가능성이 있기 때문에 더 다루기 어려운 기술임을 인식하여야 한다.</p>

<h3>참고 링크</h3>

<ul>
    <li><a href="http://en.wikipedia.org/wiki/Unobtrusive_JavaScript">Unobtrusive JavaScript &#8211; wikipedia</a></li>
    <li><a href="http://www.alistapart.com/articles/behavioralseparation">Behavior Seperation &#8211; A List Apart</a></li>
    <li><a href="http://sangini.net/56">자바스크립트를 올바르게 사용하기 &#8211; Sangini World</a></li>
    <li><a href="http://hyeonseok.com/docs/accessible-javascript/">접근성을 해치지 않는 자바스크립트의 사용 &#8211; 신현석</a></li>
</ul>

<p class="updatedat">마지막 업데이트: 2008년 4월 25일 04시 30분</p>
]]></content:encoded>
			<wfw:commentRss>http://miya.pe.kr/2007/11/25/%ea%b2%b8%ec%86%90%ed%95%9c-%ec%9e%90%eb%b0%94%ec%8a%a4%ed%81%ac%eb%a6%bd%ed%8a%b8%ec%9d%98-%ea%b8%b0%eb%b3%b8/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>여러 개의 제출 버튼을 가진 폼은 어떻게 접근성을 보장할까?</title>
		<link>http://miya.pe.kr/2007/10/14/%ec%97%ac%eb%9f%ac-%ea%b0%9c%ec%9d%98-%ec%a0%9c%ec%b6%9c-%eb%b2%84%ed%8a%bc%ec%9d%84-%ea%b0%80%ec%a7%84-%ed%8f%bc%ec%9d%80-%ec%96%b4%eb%96%bb%ea%b2%8c-%ec%a0%91%ea%b7%bc%ec%84%b1%ec%9d%84-%eb%b3%b4/</link>
		<comments>http://miya.pe.kr/2007/10/14/%ec%97%ac%eb%9f%ac-%ea%b0%9c%ec%9d%98-%ec%a0%9c%ec%b6%9c-%eb%b2%84%ed%8a%bc%ec%9d%84-%ea%b0%80%ec%a7%84-%ed%8f%bc%ec%9d%80-%ec%96%b4%eb%96%bb%ea%b2%8c-%ec%a0%91%ea%b7%bc%ec%84%b1%ec%9d%84-%eb%b3%b4/#comments</comments>
		<pubDate>Sun, 14 Oct 2007 09:21:50 +0000</pubDate>
		<dc:creator>김군우</dc:creator>
				<category><![CDATA[Markup]]></category>
		<category><![CDATA[웹 접근성]]></category>
		<category><![CDATA[웹 표준]]></category>

		<guid isPermaLink="false">http://www.miya.pe.kr/archives/40</guid>
		<description><![CDATA[웹 사이트 개발을 하다보면 하나의 폼에 여러 개의 제출 버튼을 써야하는 경우가 있다. 그 경우 자바스크립트를 사용하지 않고 원하는 기능을 구현하려면 어떻게 해야할까? IE의 버그로 인해 여러 방법 중 대부분이 사용이 어렵지만 submit 타입의 input 태그를 여러 개 넣어서 폼을 구성하면 버그 없고 자바스크립트 의존적이지 않은 결과물을 만들 수 있다. 그럼 실제로 각 글에 체크박스가 [...]]]></description>
			<content:encoded><![CDATA[<p>웹 사이트 개발을 하다보면 하나의 폼에 여러 개의 제출 버튼을 써야하는 경우가 있다. 그 경우 자바스크립트를 사용하지 않고 원하는 기능을 구현하려면 어떻게 해야할까? IE의 버그로 인해 여러 방법 중 대부분이 사용이 어렵지만 submit 타입의 input 태그를 여러 개 넣어서 폼을 구성하면 버그 없고 자바스크립트 의존적이지 않은 결과물을 만들 수 있다.</p>
<p>그럼 실제로 각 글에 체크박스가 있어서 체크 후 삭제 혹은 이동하는 기능이 있는 게시판 목록을 만들어보자. 결과물은 다음의 그림과 같을 것이다.</p>
<p><img src="http://cfs3.tistory.com/upload_control/download.blog?fhandle=YmxvZzcwNDEyQGZzMy50aXN0b3J5LmNvbTovYXR0YWNoLzAvNC5wbmc=" alt="여러 개의 제출 버튼을 가진 폼 예제" height="467" width="600" /></p>
<p>그림을 보고 <abbr title="Hypertext Markup Language">HTML</abbr> 페이지를 만들어보자.</p>
<p>
<pre><code class=&quot;html&quot;>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;
&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;ko&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;title&gt;여러개의 폼 제출 버튼 예제&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;form action=&quot;test.html&quot;&gt;
        &lt;h1&gt;여러개의 폼 제출 버튼 예제&lt;/h1&gt;
        &lt;table summary=&quot;게시판 목록&quot;&gt;
            &lt;thead&gt;
                &lt;tr&gt;
                    &lt;th&gt;선택&lt;/th&gt;
                    &lt;th&gt;제목&lt;/th&gt;
                    &lt;th&gt;작성자&lt;/th&gt;
                    &lt;th&gt;작성일&lt;/th&gt;
                    &lt;th&gt;조회수&lt;/th&gt;
                &lt;/tr&gt;
            &lt;/thead&gt;
            &lt;tbody&gt;
                &lt;tr&gt;
                    &lt;td&gt;&lt;input type=&quot;checkbox&quot; title=&quot;1번글 선택&quot;
                         name=&quot;check1&quot; value=&quot;Y&quot; /&gt;&lt;/td&gt;
                    &lt;td&gt;게시판 제목1&lt;/td&gt;
                    &lt;td&gt;아무개&lt;/td&gt;
                    &lt;td&gt;2007년 10월 13일&lt;/td&gt;
                    &lt;td&gt;4&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;&lt;input type=&quot;checkbox&quot; title=&quot;2번글 선택&quot;
                         name=&quot;check2&quot; value=&quot;Y&quot; /&gt;&lt;/td&gt;
                    &lt;td&gt;게시판 제목2&lt;/td&gt;
                    &lt;td&gt;아무개&lt;/td&gt;
                    &lt;td&gt;2007년 10월 13일&lt;/td&gt;
                    &lt;td&gt;4&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;&lt;input type=&quot;checkbox&quot; title=&quot;3번글 선택&quot;
                         name=&quot;check3&quot; value=&quot;Y&quot; /&gt;&lt;/td&gt;
                    &lt;td&gt;게시판 제목3&lt;/td&gt;
                    &lt;td&gt;아무개&lt;/td&gt;
                    &lt;td&gt;2007년 10월 13일&lt;/td&gt;
                    &lt;td&gt;4&lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;&lt;input type=&quot;checkbox&quot; title=&quot;4번글 선택&quot;
                         name=&quot;check4&quot; value=&quot;Y&quot; /&gt;&lt;/td&gt;
                    &lt;td&gt;게시판 제목4&lt;/td&gt;
                    &lt;td&gt;아무개&lt;/td&gt;
                    &lt;td&gt;2007년 10월 13일&lt;/td&gt;
                    &lt;td&gt;4&lt;/td&gt;
                &lt;/tr&gt;
            &lt;/tbody&gt;
        &lt;/table&gt;
        &lt;p&gt;
            &lt;input type=&quot;submit&quot; name=&quot;delete_selected&quot;
                value=&quot;선택된 글 삭제&quot; /&gt;
            &lt;input type=&quot;submit&quot; name=&quot;move_selected&quot;
                value=&quot;선택된 글 이동&quot; /&gt;
        &lt;/p&gt;
    &lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre>
</p>
<p>선택된 글 삭제와 선택된 글 이동 버튼을 submit 타입의 input 태그로 주고 각각에 name 속성을 부여하였다. 여기에서 1번글을 선택하고 선택된 글 삭제 버튼을 누른다면 제출된 값은 다음과 같을 것이다.</p>
<p>
<pre><code>check1 = &quot;Y&quot;
delete_selected = &quot;선택된 글 삭제&quot;</code></pre>
</p>
<p>마찬가지로 이동 버튼을 누른다면,</p>
<p>
<pre><code>check1 = &quot;Y&quot;
move_selected = &quot;선택된 글 이동&quot;</code></pre>
</p>
<p>위와 같은 값이 제출될 것이다.</p>
<p>&quot;선택된 글 삭제&quot;와 같은 값을 다른 원하는 임의의 값으로 줄 수 없을까? 답은 불가능하다. 화면에 보여지는 값을 그대로 사용해야 한다. 이 것이 필자가 설명한 방식의 한계이다. 개발자들은 보통 &quot;Y&quot; 혹은 &quot;delete&quot;와 같은 명확한 코드 형식의 단어를 사용하고 싶어할 것이다. 하지만 자바스크립트를 사용할 수 없는 사용자들의 불평을 듣고 싶지 않다면 현재로서는 어쩔 수 없다. IE(IE7 포함) 사용자는 submit 타입의 input 태그 외에 submit 타입의 button 태그나 image 타입의 input 혹은 button 태그에 name 속성을 통해 제출 값을 구분할 수 없기 때문이다.</p>
<p>이미지 버튼일 경우는 어떻게 하나? image 타입의 input 태그를 사용할 수 없다면? 답은 <a href="http://www.stuffandnonsense.co.uk/archives/mir_image_replacement.html">Image Replacement</a>이다. Image Replacement를 사용할 수 없는 상황이라면 폼 제출 버튼을 이미지 &#8211; 배경 이미지 제외 &#8211; 로 하지 않는 디자인을 고려해보아야 할 것이다.</p>
<p>
<pre><code class=&quot;html&quot;>&lt;style type=&quot;text/css&quot;&gt;
input.delete-selected {
    width: 100px;
    height: 20px;
    background: url(delete_selected.gif) no-repeat;
    text-indent: -5000px;
}
input.delete-selected {
    width: 100px;
    height: 20px;
    background: url(move_selected.gif) no-repeat;
    text-indent: -5000px;
}
&lt;/style&gt;
&lt;!-- 중략 --&gt;
&lt;p&gt;
    &lt;input type=&quot;submit&quot; class=&quot;delete-selected&quot;
        name=&quot;delete_selected&quot; value=&quot;선택된 글 삭제&quot; /&gt;
    &lt;input type=&quot;submit&quot; class=&quot;move-selected&quot;
        name=&quot;move_selected&quot; value=&quot;선택된 글 이동&quot; /&gt;
&lt;/p&gt;</code></pre>
</p>
<p>글의 코드는 아래의 첨부파일을 다운로드를 통해 실행해볼 수 있다.</p>
<p><a href="http://tenshi.tistory.com/attachment/ck4.html"><img src="http://cfs.tistory.com/blog/image/extension/html.gif" style="vertical-align: middle" alt="" /> select.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://miya.pe.kr/2007/10/14/%ec%97%ac%eb%9f%ac-%ea%b0%9c%ec%9d%98-%ec%a0%9c%ec%b6%9c-%eb%b2%84%ed%8a%bc%ec%9d%84-%ea%b0%80%ec%a7%84-%ed%8f%bc%ec%9d%80-%ec%96%b4%eb%96%bb%ea%b2%8c-%ec%a0%91%ea%b7%bc%ec%84%b1%ec%9d%84-%eb%b3%b4/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

