<?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; 웹 접근성</title>
	<atom:link href="http://miya.pe.kr/tag/%ec%9b%b9-%ec%a0%91%ea%b7%bc%ec%84%b1/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>탭을 헤딩으로 탭 내용을 헤딩에 이어지는 컨텐츠로 구성한 마크업을 위한 jQuery plugin, flowTab</title>
		<link>http://miya.pe.kr/2010/08/31/jquery-plugin-flowtab/</link>
		<comments>http://miya.pe.kr/2010/08/31/jquery-plugin-flowtab/#comments</comments>
		<pubDate>Tue, 31 Aug 2010 11:40:45 +0000</pubDate>
		<dc:creator>김군우</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[웹 접근성]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://miya.pe.kr/?p=153</guid>
		<description><![CDATA[WAI-ARIA의 tab, 아직 사용하긴 이르다. 라는 글을 썼었는데, 탭을 헤딩으로 탭 내용을 헤딩에 이어지는 컨텐츠로 구성한 마크업을 위한 자바스크립트 라이브러리는 찾기가 어려워 하나 만들었다. 이름하여 flowTab. (기본적으로 자연스럽게 흐르는 컨텐츠를 탭 UI로 만든다 하여 이렇게 지었다.) 마크업과 자바스크립트를 아래 코드와 같이 작성하면 된다. &#60;script type=&#34;text/javascript&#34;&#62; // &#60;!-- $(function() { $('#tabs').flowTab(); // $('#tabs').flowTab({tabSelector: '> .heading'}); }); [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://miya.pe.kr/2010/08/06/wai-aria%EC%9D%98-tab-%EC%95%84%EC%A7%81-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B4-%EC%9D%B4%EB%A5%B4%EB%8B%A4/">WAI-ARIA의 tab, 아직 사용하긴 이르다.</a> 라는 글을 썼었는데, 탭을 헤딩으로 탭 내용을 헤딩에 이어지는 컨텐츠로 구성한 마크업을 위한 자바스크립트 라이브러리는 찾기가 어려워 하나 만들었다. 이름하여 flowTab. (기본적으로 자연스럽게 흐르는 컨텐츠를 탭 UI로 만든다 하여 이렇게 지었다.)</p>

<p>마크업과 자바스크립트를 아래 코드와 같이 작성하면 된다.</p>

<p><pre class="html"><code>&lt;script type=&quot;text/javascript&quot;&gt;
// &lt;!--
$(function() {
    $('#tabs').flowTab();
    // $('#tabs').flowTab({tabSelector: '> .heading'});
});
// --&gt;
&lt;/script&gt;
&lt;div id=&quot;tabs&quot;&gt;
    &lt;h2 class=&quot;heading&quot;&gt;tab1&lt;/h2&gt;
    &lt;div&gt;tab1 content &lt;a href=&quot;#&quot;&gt;link example&lt;/a&gt;&lt;/div&gt;
    &lt;h2 class=&quot;heading&quot;&gt;tab2&lt;/h2&gt;
    &lt;div&gt;tab2 content &lt;a href=&quot;#&quot;&gt;link example&lt;/a&gt;&lt;/div&gt;
    &lt;h2 class=&quot;heading&quot;&gt;tab3&lt;/h2&gt;
    &lt;div&gt;tab3 content &lt;a href=&quot;#&quot;&gt;link example&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;</code></pre></p>

<p>flowTab plugin은 몇가지 옵션이 있다.</p>

<ul>
    <li>tabSelector: 탭을 가리키는 jQuery 선택자. (기본값: <code>&quot;&gt; .heading&quot;</code>)</li>
    <li>tabEnabledClass: 활성화된 탭 요소에 추가될 class명. (기본값: <code>&quot;headingEnabled&quot;</code>)</li>
    <li>contentDisabledClass: 비활성화된 탭 내용 요소에 추가될 class명. (기본값: <code>&quot;contentDisabledClass&quot;</code>)</li>
</ul>

<h2>예제와 다운로드</h2>

<p>예제: <a href="http://miya.pe.kr/j/jquery/flowTab/example.html">jQuery flowTab plugin example</a></p>

<p>다운로드: <a href="http://miya.pe.kr/j/jquery/flowTab/jquery.flowTab.js">jquery.flowTab.js</a></p>

<h2>no jQuery 버전</h2>

<p>탭 이외에 특별히 jQuery를 사용하지 않는 사이트는 no jQuery 버전이 더 가볍게 동작한다.</p>

<p>jQuery 버전과의 약간 옵션 차이가 있다: tabSelector 옵션 대신 tabClassName 옵션을 사용한다. 루트 요소에서 탭을 찾을 때 tabClassName에 기재된 클래스명으로 찾는다. 기본값은 <code>&quot;heading&quot;</code>.</p>

<p>아래는 코드 예제</p>

<p><pre class="html"><code>&lt;script type=&quot;text/javascript&quot;&gt;
// &lt;!--
// onload 구현은 알아서...;;
window.onload = function() {
    new flowTab(document.getElementById('tab'));
    // new flowTab(document.getElementById('tab'), {tabClassName: 'heading'});
};
// --&gt;
&lt;/script&gt;
&lt;div id=&quot;tabs&quot;&gt;
    &lt;h2 class=&quot;heading&quot;&gt;tab1&lt;/h2&gt;
    &lt;div&gt;tab1 content &lt;a href=&quot;#&quot;&gt;link example&lt;/a&gt;&lt;/div&gt;
    &lt;h2 class=&quot;heading&quot;&gt;tab2&lt;/h2&gt;
    &lt;div&gt;tab2 content &lt;a href=&quot;#&quot;&gt;link example&lt;/a&gt;&lt;/div&gt;
    &lt;h2 class=&quot;heading&quot;&gt;tab3&lt;/h2&gt;
    &lt;div&gt;tab3 content &lt;a href=&quot;#&quot;&gt;link example&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;</code></pre></p>

<p>다운로드(no jQuery): <a href="http://miya.pe.kr/j/jquery/flowTab/flowTab.js">flowTab.js</a></p>
]]></content:encoded>
			<wfw:commentRss>http://miya.pe.kr/2010/08/31/jquery-plugin-flowtab/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>WAI-ARIA의 tab, 아직 사용하긴 이르다.</title>
		<link>http://miya.pe.kr/2010/08/06/wai-aria%ec%9d%98-tab-%ec%95%84%ec%a7%81-%ec%82%ac%ec%9a%a9%ed%95%98%ea%b8%b4-%ec%9d%b4%eb%a5%b4%eb%8b%a4/</link>
		<comments>http://miya.pe.kr/2010/08/06/wai-aria%ec%9d%98-tab-%ec%95%84%ec%a7%81-%ec%82%ac%ec%9a%a9%ed%95%98%ea%b8%b4-%ec%9d%b4%eb%a5%b4%eb%8b%a4/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 02:55:10 +0000</pubDate>
		<dc:creator>김군우</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[웹 접근성]]></category>
		<category><![CDATA[WAI-ARIA]]></category>

		<guid isPermaLink="false">http://miya.pe.kr/?p=146</guid>
		<description><![CDATA[WAI-ARIA에는 다양한 위젯 &#8211; 여기서 위젯이란 tab, dialog, alert 등을 말한다. &#8211; 이 있는데 그 중 tab은 아직 조금 문제가 많은 것 같다. WAI-ARIA 저작 가이드 문서의 tab 부분을 보면 탭 인터페이스를 구현하는 방법을 자세히 소개하고 있는데 그 중 키보드 인터페이스에서 좌/우, Ctrl+Tab/Ctrl+Shift+Tab, Ctrl+PageUp/Ctrl+PageDown 키를 이용하여 탭과 탭을 이동하는 기능을 구현하도록 문서화되어 있는데 좌/우 키는 [...]]]></description>
			<content:encoded><![CDATA[<p><abbr title="Web Accessibility Initiative - Accessible Rich Internet Application">WAI-ARIA</abbr>에는 다양한 위젯 &#8211; 여기서 위젯이란 tab, dialog, alert 등을 말한다. &#8211; 이 있는데 그 중 <a href="http://www.w3.org/TR/wai-aria/roles#tab">tab</a>은 아직 조금 문제가 많은 것 같다.</p>
<p><a href="http://www.w3.org/TR/2009/WD-wai-aria-practices-20091215/#tabpanel">WAI-ARIA 저작 가이드 문서의 tab 부분</a>을 보면 탭 인터페이스를 구현하는 방법을 자세히 소개하고 있는데 그 중 키보드 인터페이스에서 좌/우, Ctrl+Tab/Ctrl+Shift+Tab, Ctrl+PageUp/Ctrl+PageDown 키를 이용하여 탭과 탭을 이동하는 기능을 구현하도록 문서화되어 있는데 좌/우 키는 기존에 웹 페이지에서 탭 키를 통해 링크를 이동하던 사용자에게 혼란을, Ctrl+Tab/Ctrl+Shift+Tab이나 Ctrl+PageUp/Ctrl+PageDown 키는 브라우저의 탭간 이동에 사용되고 있어 중복된다. (문서에 이 내용도 언급이 되어있다! -_-)</p>
<p>현재 탭(처럼 보이는) 마크업에는 크게 2가지 코드 형태가 사용된다고 생각한다.</p>
<figure>
<pre><code>&lt;div class=&quot;tabpanel&quot;&gt;
    &lt;ul class=&quot;tablist&quot;&gt;
        &lt;li&gt;&lt;a href=&quot;#tab1&quot;&gt;Tab1&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;#tab2&quot;&gt;Tab2&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;#tab3&quot;&gt;Tab3&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;div id=&quot;tab1&quot;&gt;
        &lt;h1&gt;Tab1&lt;/h1&gt;
        Tab1 Content&lt;/div&gt;
    &lt;div id=&quot;tab2&quot;&gt;
        &lt;h1&gt;Tab2&lt;/h1&gt;
        Tab2 Content&lt;/div&gt;
    &lt;div id=&quot;tab3&quot;&gt;
        &lt;h1&gt;Tab3&lt;/h1&gt;
        Tab3 Content&lt;/div&gt;
&lt;/div&gt;</code></pre>
<figcaption>[코드1] 탭이 목록형태로 마크업되고 각각 탭 내용으로 연결되도록 구성한 마크업</figcaption>
</figure>
<figure>
<pre><code>&lt;div class=&quot;tabpanel&quot;&gt;
    &lt;h1&gt;Tab1&lt;/h1&gt;
    &lt;div id=&quot;tab1&quot;&gt;Tab1 Content&lt;/div&gt;
    &lt;h1&gt;Tab2&lt;/h1&gt;
    &lt;div id=&quot;tab2&quot;&gt;Tab2 Content&lt;/div&gt;
    &lt;h1&gt;Tab3&lt;/h1&gt;
    &lt;div id=&quot;tab3&quot;&gt;Tab3 Content&lt;/div&gt;
&lt;/div&gt;</code></pre>
<figcaption>[코드2] 탭을 헤딩으로, 탭 내용을 헤딩에 이어지는 컨텐츠로 구성한 마크업</figcaption>
</figure>
<p>[코드1]에는 문제가 발생할 여지가 많다. 탭에서 <code>href=&quot;#tab1&quot;</code>와 같은 링크가 생략되는 경우, 링크가 올바로 컨텐츠를 가리키지 못하는 경우, 컨텐츠에 헤딩이 누락되는 경우 등이다. 그리고 [코드1]을 자바스크립트를 통해 구현한 경우 보통 탭의 링크를 취소(preventDefault) 시키기 때문에 다른 탭들을 건너뛰어 해당 내용으로 이동해야 하기 때문에 마우스 사용자 이외에는 비효율적이다. 탭이 많으면 많을수록 더욱 더 비효율적이 된다.</p>
<p>
<figure>
<img alt="코드1의 키보드 이동 순서" src="/i/posts/aria-tab-code1-kbd-flow.jpg" /></figure></p>
<figcaption>[그림1] 코드1의 키보드 이동 순서는 1번탭 &rarr; 2번탭 &rarr; &hellip; &rarr; 마지막 탭 &rarr; 선택된 탭 내용 순이다.</figcaption>

<p>[코드2]는 코드1의 키보드 비효율성이 전혀 없다. 코드1의 문제가 발생할 여지들도 애초에 차단된다. 탭 UI를 위해 헤딩을 작성하도록 유도시키고 빼먹거나 잘못 구현할지 모르는 탭 링크들을 애초에 제거하였다.</p>
<p>
<figure>
<img alt="코드2의 키보드 이동 순서" src="/i/posts/aria-tab-code2-kbd-flow.jpg" /></figure></p>
<figcaption>[그림2] 코드2의 키보드 이동 순서는 1번탭 &rarr; 1번탭 내용 &rarr; 2번탭 &rarr; 2번탭 내용 &rarr; &hellip;</figcaption>

<p>웹 어플리케이션 위젯을 OS의 그것들처럼 인식시키려고 하는 ARIA의 구현방식에서 볼 때는 코드2와 같은 구현이 적절하지 않다고 생각되기도 한다. 하지만 마우스 사용자에게는 어차피 상관없는 문제이고 키보드 사용자에게는 이전의 웹 페이지들과 다른 사용행태에 대한 혼란을 없앨 수 있다(익숙함을 유지하는 것을 영원히 장점이라고 하긴 어렵지만&hellip;). 무엇보다 개발자들에게 오류 발생 가능성을 상당히 줄여줄 수 있다는 사실 때문에 앞서 언급했던 ARIA tab의 문제들을 제거한 라이브러리들이 등장하기 전까지는 코드2와 같은 구현 방식을 추천하고 싶다.</p>
]]></content:encoded>
			<wfw:commentRss>http://miya.pe.kr/2010/08/06/wai-aria%ec%9d%98-tab-%ec%95%84%ec%a7%81-%ec%82%ac%ec%9a%a9%ed%95%98%ea%b8%b4-%ec%9d%b4%eb%a5%b4%eb%8b%a4/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>접근성을 해치지 않는 자바스크립트의 사용, 그 다음엔?</title>
		<link>http://miya.pe.kr/2008/11/10/%ec%a0%91%ea%b7%bc%ec%84%b1%ec%9d%84-%ed%95%b4%ec%b9%98%ec%a7%80-%ec%95%8a%eb%8a%94-%ec%9e%90%eb%b0%94%ec%8a%a4%ed%81%ac%eb%a6%bd%ed%8a%b8%ec%9d%98-%ec%82%ac%ec%9a%a9-%ea%b7%b8-%eb%8b%a4%ec%9d%8c/</link>
		<comments>http://miya.pe.kr/2008/11/10/%ec%a0%91%ea%b7%bc%ec%84%b1%ec%9d%84-%ed%95%b4%ec%b9%98%ec%a7%80-%ec%95%8a%eb%8a%94-%ec%9e%90%eb%b0%94%ec%8a%a4%ed%81%ac%eb%a6%bd%ed%8a%b8%ec%9d%98-%ec%82%ac%ec%9a%a9-%ea%b7%b8-%eb%8b%a4%ec%9d%8c/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 14:16:55 +0000</pubDate>
		<dc:creator>김군우</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[웹 접근성]]></category>
		<category><![CDATA[ARIA]]></category>
		<category><![CDATA[WAI-ARIA]]></category>
		<category><![CDATA[Web Accessibility]]></category>
		<category><![CDATA[자바스크립트]]></category>

		<guid isPermaLink="false">http://miya.pe.kr/?p=97</guid>
		<description><![CDATA[접근성을 해치지 않는 자바스크립트의 사용 신현석님의 접근성을 해치지 않는 자바스크립트의 사용이라는 글을 읽어보셨는지요? 혹시 어렵고 복잡하다고 생각하실지 모르나 자바스크립트 기술 위에 HTML 표준에 대한 이해가 수반된다면 크게 복잡한 과정이 아닙니다. 웹 사이트 개발에 들어가기 앞서 위의 과정을 이해하고 있다면 접근성을 해치면서(?) 사용하는 자바스크립트와 같은 비용으로 자바스크립트가 불가능한 환경의 접근성, 검색엔진 최적화(SEO) 등의 이득을 챙길 수 [...]]]></description>
			<content:encoded><![CDATA[<h3>접근성을 해치지 않는 자바스크립트의 사용</h3>

<p>신현석님의 <a href="http://hyeonseok.com/docs/accessible-javascript/">접근성을 해치지 않는 자바스크립트의 사용</a>이라는 글을 읽어보셨는지요? 혹시 어렵고 복잡하다고 생각하실지 모르나 자바스크립트 기술 위에 HTML 표준에 대한 이해가 수반된다면 크게 복잡한 과정이 아닙니다. 웹 사이트 개발에 들어가기 앞서 위의 과정을 이해하고 있다면 접근성을 해치면서(?) 사용하는 자바스크립트와 같은 비용으로 자바스크립트가 불가능한 환경의 접근성, 검색엔진 최적화(<abbr title="Search Engine Optimization">SEO</abbr>) 등의 이득을 챙길 수 있습니다. 접근성을 보장하는 것이 그렇지 않은 것에 비해 추가비용을 필요로 하는 것은 사실이지만 그 추가비용 안에 위의 언급한 이득은 포함되어 있지 않습니다. 즉, 위의 이득들은 <strong>꽁짜</strong>란 얘기죠. ㅋ 실제로 <a href="http://me2day.net">미투데이</a>라는 서비스의 경우 자바스크립트를 제거한 상태에서도 정확하게 원하는 기능을 사용할 수 있고, 자바스크립트가 이 기능들을 좀 더 편하고 신속하게 이용할 수 있는 보조장치로 쓰인 모습을 볼 수 있습니다.</p>

<h3>그 다음엔?</h3>

<p>자… 그럼 이렇게 하면 끝일까요? 사실 아닙니다. 그 이유는 말빨이 부족한 제가 설명하는 대신 유명한 웹 접근성 관련 블로그인 <a href="http://www.456bereastreet.com">456 Berea Street</a>의 Roger Johansson옹의 글 <a href="http://www.456bereastreet.com/archive/200811/reading_up_on_wai-aria/">Reading up on <abbr title="Web Accessibility Initiative-Accessible Rich Internet Applications">WAI-ARIA</abbr></a>에서 따왔습니다.</p>

<blockquote>

<div xml:lang="en" lang="en">
<p>One of the more problematic areas of web accessibility is how to handle the custom widgets and dynamic changes to content used in most web applications and on many content-based websites.</p>
<p>Using JavaScript to add custom behaviour and update content can cause problems for people who rely on assistive technology (AT) such as screen readers. The problems often consist of the AT not being aware that content on the page has changed, the user not noticing that something has changed, or the user being aware that something changed but not what.</p>
</div>

<div title="허접 번역본;">
<p>웹 접근성에서 상당히 골칫거리인것들 중에 하나가 커스텀 위젯이나 대부분의 웹 어플리케이션이나 많은 컨텐츠 중심 웹 사이트들에서 사용된 컨텐츠의 동적인 변경을 어떻게 다루느냐하는 것이다.</p>
<p>자바스크립트를 사용하여 특정 동작을 추가하고 컨텐츠를 갱신하는 것은 스크린리더와 같은 보조기기에 의지하고 있는 사람들에게 문제를 일으킬 수 있다. 그 문제란 대개 보조기기가 페이지의 컨텐츠가 변경된 것을 감지하지 못하여 사용자가 무엇인가 바뀌었다는 것을 알지 못하거나, 혹은 사용자가 무엇인가 바뀌었다는 것은 알지만 그게 무엇인지는 모르는 문제를 가리킨다.</p>
</div>
</blockquote>

<p>그래서 나온게 <a href="http://www.w3.org/WAI/intro/aria"><abbr title="Web Accessibility Initiative-Accessible Rich Internet Applications">WAI-ARIA</abbr></a>입니다. 자, 그러면 당장 적용을 시키면 되나? 그렇습니…다라고 말씀을 드려야 하지만 좀 상황이 편하지만은 않습니다. WAI-ARIA라는 스펙 자체가 초안(Working Draft) 상태라 아직 표준으로 인정할 수 없는 상태이고 국내에서 유명한 스크린리더인 <a href="http://www.xvtech.com/xvision_renew/product/product_02.php">센스리더</a>는 WAI-ARIA의 W자도 찾아볼 수 없습니다. 구현이 전혀 안되어 있다는 얘기죠.</p>

<p class="captionwithsshot"><img alt="" src="/images/2008/accessibility/googlereader.gif" height="400" /><br />
구글리더는 ARIA 기능을 사용할 수 있는 감춰진 링크를 제공하고 있다.</p>

<p><q>보조기기들도 지원안하는 WAI-ARIA인지 뭔지 적용하나 마나 쓸모없지 않나?</q>라는 질문을 하실 수 있습니다. 마찬가지로 센스리더 등의 보조기기 제작사에서는 <q>구현된 사이트도 없는데 WAI-ARIA인지 뭔지 적용하나 마나 쓸모없지 않나?</q>라는 질문을 할 수 있고요. -_-;;;</p>

<p>둘 중 누가 먼저라는 걸 서로 주장하는 것도 웃깁니다. 오히려 서로 시급히 도입해야 할 판국이죠. 그렇지 않습니까? ^^</p>

<h3>지금 당장은?</h3>

<p>우여곡절 끝에 접근성을 해치치 않는 자바스크립트를 사용하고 그 위에 WAI-ARIA까지 적용했다고 합시다. 그런데 보조기기들은 아직이라면? 답은 의외로 간단합니다. 보조기기 사용자들이 자바스크립트를 꺼둔 상태로 사이트를 작동할 수 있는 기능(문서 시작점에 이 기능에 대한 링크를 제공한다던지…)을 주면 됩니다. :)</p>
]]></content:encoded>
			<wfw:commentRss>http://miya.pe.kr/2008/11/10/%ec%a0%91%ea%b7%bc%ec%84%b1%ec%9d%84-%ed%95%b4%ec%b9%98%ec%a7%80-%ec%95%8a%eb%8a%94-%ec%9e%90%eb%b0%94%ec%8a%a4%ed%81%ac%eb%a6%bd%ed%8a%b8%ec%9d%98-%ec%82%ac%ec%9a%a9-%ea%b7%b8-%eb%8b%a4%ec%9d%8c/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ajax의 접근성 보장</title>
		<link>http://miya.pe.kr/2007/11/28/ajax%ec%9d%98-%ec%a0%91%ea%b7%bc%ec%84%b1-%eb%b3%b4%ec%9e%a5/</link>
		<comments>http://miya.pe.kr/2007/11/28/ajax%ec%9d%98-%ec%a0%91%ea%b7%bc%ec%84%b1-%eb%b3%b4%ec%9e%a5/#comments</comments>
		<pubDate>Wed, 28 Nov 2007 07:59:36 +0000</pubDate>
		<dc:creator>김군우</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[웹 접근성]]></category>

		<guid isPermaLink="false">http://www.miya.pe.kr/archives/24</guid>
		<description><![CDATA[요즘 웹에는 접근성의 문제를 해결하지 못한 RIA, 즉 Ajax가 많이 쓰인다. 예를 들어 Drag &#38; Drop 기능을 웹 사이트에 붙인 경우 마우스를 사용할 수 없는 사용자나 스크린리더 사용자들에게 그것을 조작할 수 있게 하기는 힘이 든다. 웹 접근성 가이드라인과 Ajax KWCAG 1.0 에는 Flash나 동영상 등의 외부 플러그인에는 적절한 대체 컨텐츠를 제공하여야 한다는 내용이 담겨 있다. [...]]]></description>
			<content:encoded><![CDATA[<p>요즘 웹에는 접근성의 문제를 해결하지 못한 <abbr title="Rich Internet Application">RIA</abbr>, 즉 Ajax가 많이 쓰인다. 예를 들어 Drag &amp; Drop 기능을 웹 사이트에 붙인 경우 마우스를 사용할 수 없는 사용자나 스크린리더 사용자들에게 그것을 조작할 수 있게 하기는 힘이 든다.</p>

<h3>웹 접근성 가이드라인과 Ajax</h3>

<p><abbr title="Korean Web Content Accessibility Guidelines">KWCAG</abbr> 1.0 에는 Flash나 동영상 등의 외부 플러그인에는 적절한 대체 컨텐츠를 제공하여야 한다는 내용이 담겨 있다. 그와 더불어 자체적인 접근성(키보드 조작 가능)이 보장되어야 한다는 내용도 있다. 이는 Ajax 어플리케이션에도 동일하게 적용되는 내용이지만 Drag &amp; Drop이나 위지윅(wysiwig) 에디터 등 키보드 만으로 조작 가능하게 만들기도 불가능한 어플리케이션은 자체적인 접근성을 지니기가 힘들다.</p>

<h3>99% 부족한 접근성 보장</h3>

<p>앞서 언급한 Drag &amp; Drop이나 위지윅(wysiwig) 에디터 등의 접근성 문제를 해결하는 데에는 여러 가지 방법이 있을 수 있다. 사용성은 떨어지지만 키보드로 구현할 수 있으며 시각장애인을 위해 부가적인 설명을 달아줄 수 있다. 하지만 결과적으로 어떤 이들에게는 사용성의 증대의 좋은 결과를 가져다 준 기능이 어떤 이들에게는 사용성의 저하라는 결과를 가져다 주고 말게 된다. 다양한 환경을 고려하여야 사용성의 저하이지 현재 웹 상의 Ajax는 대부분 키보드만으로, 혹은 스크린리더 등으로 접근할 수 없다.</p>

<p>&quot;자바스크립트 언어로 구현된 Ajax 어플리케이션의 경우 &lt;noscript&gt; 태그를 통해 모든 기능을 구현해 주었다. 무엇이 문제냐?&quot; 하고 묻는다면 &quot;자바스크립트를 사용할 수 있는 경우라도 무조건 마우스를 사용할 수 있는 것이 아니다&quot;라고 얘기하겠다. &quot;자바스크립트 기능을 끄고 사용하면 되지 않느냐?&quot; 하고 묻는다면 &quot;IE6에서 자바스크립트 기능을 한 번 꺼보라&quot;고 얘기하겠다. 매일 인터넷을 이용하는 사람들조차 거의 자바스크립트 기능을 끄는 법을 알아내기가 쉽지 않다. 자바스크립트 기능을 끄는 법을 어플리케이션의 장치 의존적 특성과 함께 해당 어플리케이션이 담긴 페이지 내에서 설명한다면 어느 정도 접근성은 향상시킬 수 있다고 하겠으나, 브라우저의 설정 도구 깊숙히 숨어있는 옵션을 제어하기 위해 설명을 읽고 시간을 허비한다면 결코 접근성이 보장된 어플리케이션이라고 얘기할 수 없다.</p>

<h3>대체 기능의 제공</h3>

<p>내가 생각하는 최선(最善)은 대체 기능의 제공이다. Ajax 기능은 사용할 수 있지만 장치의 문제 상 단순히 HTML만으로 이루어진 페이지보다 접근성이나 사용성이 떨어지는 경우에는 해당 어플리케이션을 표시하기 전에 분명히 장치 의존적 특성을 설명하고 같은 기능을 다른 방법으로 &#8211; 단순한 HTML 등 &#8211; 수행할 수 있는 링크를 제공하여야겠다. Drag &amp; Drop 어플리케이션의 대체 기능을 제공한다면 화면의 모양은 다음과 같을 것이다.</p>

<p><img alt="대체 기능을 제공하는 HTML 마크업 예제" src="/images/2007/11/alt-function-example.gif" /></p>

<p>대체 기능 제공을 위하여 대체 기능을 사용할 수 있는 사용자의 범위를 인식하고 그 범위의 사용자들에게 명시적으로 대체 기능의 목적과 이용방법을 제공하여야 할 것이다. 자세한 설명을 별도의 설명 페이지를 통해 할 수 있지만 예제에 표시된 정도의 메시지는 기본적으로 포함되어야 한다. 어떤 사용자는 어플리케이션의 대략적인 성격과 이용가능여부를 다른 페이지를 보고 나서야 알 수 있다면 상당한 사용성의 침해를 받을 것이기 때문이다.</p>

<h3>Ajax를 이용할 수 있는 모든 장치를 지닌 사용자라도 무조건 배제할 수는 없다.</h3>

<p>대체 기능을 제공할 사용자 범위 산정에 있어 사용자의 이용 환경만을 생각하면 안된다. 예로 마우스 롤오버 시에 작은 이벤트로 또 다른 기능을 제공하는 경우라면 민첩하지 못한 사용자나 인터넷 초심자 &#8211; 노인, 어린이, 지체장애인 등 &#8211; 에게는 오히려 방해가 될 수 있는 것이 Ajax이다. 이런 사용자에게도 확실하게 어플리케이션의 성격과 이용 시에 야기될 수 있는 문제점들을 알리고 그 대안(대체 기능)을 제공하는 것이 진정한 Ajax의 접근성이라고 하겠다.</p>
]]></content:encoded>
			<wfw:commentRss>http://miya.pe.kr/2007/11/28/ajax%ec%9d%98-%ec%a0%91%ea%b7%bc%ec%84%b1-%eb%b3%b4%ec%9e%a5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>민간기업의 웹 접근성 모범사례(Best Practices) 세미나에 다녀오다.</title>
		<link>http://miya.pe.kr/2007/11/27/%eb%af%bc%ea%b0%84%ea%b8%b0%ec%97%85%ec%9d%98-%ec%9b%b9-%ec%a0%91%ea%b7%bc%ec%84%b1-%eb%aa%a8%eb%b2%94%ec%82%ac%eb%a1%80best-practices-%ec%84%b8%eb%af%b8%eb%82%98%ec%97%90-%eb%8b%a4%eb%85%80/</link>
		<comments>http://miya.pe.kr/2007/11/27/%eb%af%bc%ea%b0%84%ea%b8%b0%ec%97%85%ec%9d%98-%ec%9b%b9-%ec%a0%91%ea%b7%bc%ec%84%b1-%eb%aa%a8%eb%b2%94%ec%82%ac%eb%a1%80best-practices-%ec%84%b8%eb%af%b8%eb%82%98%ec%97%90-%eb%8b%a4%eb%85%80/#comments</comments>
		<pubDate>Tue, 27 Nov 2007 11:09:30 +0000</pubDate>
		<dc:creator>김군우</dc:creator>
				<category><![CDATA[웹 접근성]]></category>
		<category><![CDATA[Ajax]]></category>

		<guid isPermaLink="false">http://www.miya.pe.kr/archives/23</guid>
		<description><![CDATA[오늘(2007년 11월 27일) 있었던 민간기업의 웹 접근성 모범사례(Best Practices) 세미나에 다녀왔다. 포털들의 웹 접근성 보장 노력을 보다. 포털들은 빠르게 바뀌어가고 있지는 않지만, 점진적으로 그리고 체계적으로 웹 접근성을 업무에 도입하고 있다. 예전에 만들었던 table 레이아웃을 하나 둘 씩 덜어내고 제대로 된 markup, 웹 표준 준수, 시각장애인들과의 교류를 통한 실제로 도움이 되는 웹 접근성 테스트 등을 진행하고 [...]]]></description>
			<content:encoded><![CDATA[<p>오늘(2007년 11월 27일) 있었던 <a href="http://iabf.or.kr/Seminar/SeminarView.asp?sSeq=74">민간기업의 웹 접근성 모범사례(Best Practices) 세미나</a>에 다녀왔다.</p>
<h3>포털들의 웹 접근성 보장 노력을 보다.</h3>
<p>포털들은 빠르게 바뀌어가고 있지는 않지만, 점진적으로 그리고 체계적으로 웹 접근성을 업무에 도입하고 있다. 예전에 만들었던 table 레이아웃을 하나 둘 씩 덜어내고 제대로 된 markup, 웹 표준 준수, 시각장애인들과의 교류를 통한 실제로 도움이 되는 웹 접근성 테스트 등을 진행하고 있다.</p>
<h3>Ajax 접근성의 가이드라인 부재</h3>
<p><abbr title="Rich Internet Application">RIA</abbr>의 편의성이라는 장점과 접근성의 보장이 힘들다는 단점을 언급한 섹션이 있었는데 결론이라고는 달랑 <q>well-made Javascript(혹은 Ajax)를 만들자.</q> 였다. 확실히 현재 국내 웹 시장에는 <abbr title="Asynchronous JavaScript and XML">AJAX</abbr>, Flash 등의 RIA에서의 접근성 보장에 대한 기준이 미흡하다. 장치(마우스 등) 의존적인 <abbr title="User Interface">UI</abbr>, 시각에 의존적인 UI 등 어떤 사용자에게는 도움이 되는 UI가 그 기능을 사용할 수 없는 사용자들을 위해서는 어떻게 설계되어야 하는지에 대한 것이 필요할 것이다.</p>
<h3>혼자서는 이룰 수 없는 웹 접근성</h3>
<p>슈퍼맨은 홀로 지구를 지켜 나아가지만, 슈퍼 웹 퍼블리셔는 혼자서는 아무것도 할 수 없다. 작게는 웹 사이트를 만드는 모든 사람들(기획자, 디자이너 등)에서부터 크게는 회사의 이익 추구의 최전선의 경영진, 그리고 지금 인터넷을 사용하는 모든 사람들의 인식이 확립되어야 한다. 웹 접근성은 특정 사람들(시각장애인 등)만을 위한 것임이 아님을, 설마 하고 접근성의 고려 없이 만든 조그마한 사이트도 누군가에게는 불편과 아픔을 가져다 준다는 사실을 알아야겠다.</p>
]]></content:encoded>
			<wfw:commentRss>http://miya.pe.kr/2007/11/27/%eb%af%bc%ea%b0%84%ea%b8%b0%ec%97%85%ec%9d%98-%ec%9b%b9-%ec%a0%91%ea%b7%bc%ec%84%b1-%eb%aa%a8%eb%b2%94%ec%82%ac%eb%a1%80best-practices-%ec%84%b8%eb%af%b8%eb%82%98%ec%97%90-%eb%8b%a4%eb%85%80/feed/</wfw:commentRss>
		<slash:comments>0</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>『방탄 Ajax』 출시</title>
		<link>http://miya.pe.kr/2007/10/22/%e3%80%8e%eb%b0%a9%ed%83%84-ajax%e3%80%8f-%ec%b6%9c%ec%8b%9c/</link>
		<comments>http://miya.pe.kr/2007/10/22/%e3%80%8e%eb%b0%a9%ed%83%84-ajax%e3%80%8f-%ec%b6%9c%ec%8b%9c/#comments</comments>
		<pubDate>Mon, 22 Oct 2007 04:36:38 +0000</pubDate>
		<dc:creator>김군우</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[웹 접근성]]></category>
		<category><![CDATA[방탄 Ajax]]></category>

		<guid isPermaLink="false">http://www.miya.pe.kr/archives/39</guid>
		<description><![CDATA[방탄 Ajax 표지 DOM Script의 저자 제레미 키스(Jeremy Keith)가 쓴 방탄 Ajax가 출간되었습니다. DOM Script에서 올바른 DOM, 겸손한(unobtrusive) 자바스크립트에 관한 이야기를 했다면 이번엔 올바른 Ajax의 활용, 접근성을 확보하는 Ajax 개발론, 즉 겸손한(unobtrusive) Ajax에 대해 이야기하고 있습니다. 이 책에서의 Ajax는 Asynchronous JavaScript and XML가 아닌 미국과 영국 등에서 과거에 쓰였던 Ajax라는 단어의 뜻으로서 정의하고 있습니다. 쉽게 [...]]]></description>
			<content:encoded><![CDATA[<p class="attach-image"><img src="http://cfs3.tistory.com/upload_control/download.blog?fhandle=YmxvZzcwNDEyQGZzMy50aXN0b3J5LmNvbTovYXR0YWNoLzAvNS5qcGc=" alt="방탄 Ajax 표지" height="376" width="300" /><br />
방탄 Ajax 표지</p>
<p><a href="http://www.acornpub.co.kr/blog/135"><abbr title="Document Object Model">DOM</abbr> Script</a>의 저자 제레미 키스(Jeremy Keith)가 쓴 <a href="http://www.acornpub.co.kr/blog/157">방탄 Ajax</a>가 출간되었습니다. <a href="http://www.acornpub.co.kr/blog/135"><abbr title="Document Object Model">DOM</abbr> Script</a>에서 올바른 <abbr title="Document Object Model">DOM</abbr>, 겸손한(unobtrusive) 자바스크립트에 관한 이야기를 했다면 이번엔 올바른 Ajax의 활용, 접근성을 확보하는 Ajax 개발론, 즉 겸손한(unobtrusive) Ajax에 대해 이야기하고 있습니다.</p>
<p>이 책에서의 Ajax는 Asynchronous JavaScript and <abbr title="eXtensible Markup Language">XML</abbr>가 아닌 미국과 영국 등에서 과거에 쓰였던 Ajax라는 단어의 뜻으로서 정의하고 있습니다. 쉽게 말해 Flex, Silverlight 등의 <abbr title="Rich Internet Application">RIA</abbr>을 포괄하는 의미라는 것입니다.</p>
<p><q>모든 웹 사이트, 웹 어플리케이션의 기본은 <strong>문서</strong>이다.</q> 라고 이야기하는 이 책에서는 기본적인 문서(<abbr title="(eXtensible) HyperText Markup Language">(X)HTML</abbr>)로 부터 출발하여 점층적으로 <abbr title="Cascading StyleSheet">CSS</abbr>, Ajax를 덧붙여 나아가는 개발 방식을 이야기하고 있습니다. 기본적으로 <a href="http://ko.wikipedia.org/wiki/%ED%95%98%EC%9C%84_%ED%98%B8%ED%99%98%EC%84%B1">하위 호환성</a>과 접근성이 보장된 문서(<abbr title="(eXtensible) HyperText Markup Language">(X)HTML</abbr>)의 틀에서 점층적으로 새로운 기술들을 적용해 나아간다면 겸손한(unobtrusive) Ajax의 제작이 어렵지 않을 것이라는 이야기입니다.</p>
<p>Ajax 기술들은 아직 충분히 접근성이 검증되어 있지 않은 새로운 기술들입니다. <a href="http://www.acornpub.co.kr/blog/157">방탄 Ajax</a>는 그에 대해 지적하며 Ajax 기술 적용 시에 잃을 수 있는 것들에 대해 경고하고 있습니다. 저는 이것이 이 책이 얘기하는 주제라고 생각합니다. 눈 앞에 펼쳐질 화려한 효과에 앞서 고려하지 않으면 잃게 될 것이 무엇인지, 잃게 될 것들을 지키려면 어떻게 해야 할지가 명확하지 않다면 이 책을 볼 충분한 이유가 될 것 같습니다.</p>
<p>덧) 항상 좋은 책을 볼 수 있게 해주시는 <a href="http://anarch.tistory.com/">명수씨</a>, 감사합니다! :)</p>
]]></content:encoded>
			<wfw:commentRss>http://miya.pe.kr/2007/10/22/%e3%80%8e%eb%b0%a9%ed%83%84-ajax%e3%80%8f-%ec%b6%9c%ec%8b%9c/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>
		<item>
		<title>웹접근성과 select 태그의 사용</title>
		<link>http://miya.pe.kr/2007/08/20/%ec%9b%b9%ec%a0%91%ea%b7%bc%ec%84%b1%ea%b3%bc-select-%ed%83%9c%ea%b7%b8%ec%9d%98-%ec%82%ac%ec%9a%a9/</link>
		<comments>http://miya.pe.kr/2007/08/20/%ec%9b%b9%ec%a0%91%ea%b7%bc%ec%84%b1%ea%b3%bc-select-%ed%83%9c%ea%b7%b8%ec%9d%98-%ec%82%ac%ec%9a%a9/#comments</comments>
		<pubDate>Mon, 20 Aug 2007 09:15:21 +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/46</guid>
		<description><![CDATA[(그림1. 전송 버튼이 적용되지 않은 select 태그) 그림1은 현재 게시판의 분류나 바로가기 메뉴 등에서 선택 시 바로 폼을 전송시키거나 자바스크립트를 이용하여 페이지 전환을 하는 용도로 쓰이고 있다. 그러나 키보드 사용자나 자바스크립트를 사용할 수 없는 사용자를 고려하였을 때 위와 같은 사용은 불가하다. 자바스크립트가 불가능한 사용자를 위해 &#60;noscript&#62; 태그를 이용하여 서브밋 버튼을 추가하면 되지 않느냐? 그것은 반쪽짜리 [...]]]></description>
			<content:encoded><![CDATA[<p class="attach-image"><img src="http://cfs3.tistory.com/upload_control/download.blog?fhandle=YmxvZzcwNDEyQGZzMy50aXN0b3J5LmNvbTovYXR0YWNoLzAvMS5wbmc=" alt="전송 버튼이 적용되지 않은 select 태그" height="384" width="455" />(그림1. 전송 버튼이 적용되지 않은 select 태그)</p>

<p>그림1은 현재 게시판의 분류나 바로가기 메뉴 등에서 선택 시 바로 폼을 전송시키거나 자바스크립트를 이용하여 페이지 전환을 하는 용도로 쓰이고 있다. 그러나 키보드 사용자나 자바스크립트를 사용할 수 없는 사용자를 고려하였을 때 위와 같은 사용은 불가하다. 자바스크립트가 불가능한 사용자를 위해 &lt;noscript&gt; 태그를 이용하여 서브밋 버튼을 추가하면 되지 않느냐? 그것은 <strong>반쪽짜리 접근성</strong>이다. 마우스 기능을 사용할 수 없는 사용자의 접근성이 상당히 저하되기 때문이다. 키보드 사용자는 select 태그의 목록을 활성화 시킨 후 아래 방향키를 한 번 누르는 순간 select 태그의 자바스크립트가 활성화되어 마치 목록 두 번째 요소를 선택한 듯한 결과를 보게 될 것이다.</p>

<p class="attach-image"><img src="http://cfs2.tistory.com/upload_control/download.blog?fhandle=YmxvZzcwNDEyQGZzMi50aXN0b3J5LmNvbTovYXR0YWNoLzAvMS5wbmc=" alt="전송 버튼이 적용된 select 태그" height="403" width="432" />(그림2. 전송 버튼이 적용된 select 태그)</p>

<p>전송 버튼을 넣고 select 태그의 onchange 이벤트를 제거하여 모든 사용자에 대한 접근성을 확보할 수 있다. 마우스 사용자들의 편의성 문제는 어떻게 하는가? 결국 판단은 제작하는 사람의 몫이지만 누군가의 접근성을 저해하면서 얻는 편의는 기능에 대한 <strong>남용</strong>이다.</p>
]]></content:encoded>
			<wfw:commentRss>http://miya.pe.kr/2007/08/20/%ec%9b%b9%ec%a0%91%ea%b7%bc%ec%84%b1%ea%b3%bc-select-%ed%83%9c%ea%b7%b8%ec%9d%98-%ec%82%ac%ec%9a%a9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2012년까지 장애인 13만여명에 IT보조기기 보급</title>
		<link>http://miya.pe.kr/2007/08/17/2012%eb%85%84%ea%b9%8c%ec%a7%80-%ec%9e%a5%ec%95%a0%ec%9d%b8-13%eb%a7%8c%ec%97%ac%eb%aa%85%ec%97%90-it%eb%b3%b4%ec%a1%b0%ea%b8%b0%ea%b8%b0-%eb%b3%b4%ea%b8%89/</link>
		<comments>http://miya.pe.kr/2007/08/17/2012%eb%85%84%ea%b9%8c%ec%a7%80-%ec%9e%a5%ec%95%a0%ec%9d%b8-13%eb%a7%8c%ec%97%ac%eb%aa%85%ec%97%90-it%eb%b3%b4%ec%a1%b0%ea%b8%b0%ea%b8%b0-%eb%b3%b4%ea%b8%89/#comments</comments>
		<pubDate>Fri, 17 Aug 2007 09:02:55 +0000</pubDate>
		<dc:creator>김군우</dc:creator>
				<category><![CDATA[웹 접근성]]></category>
		<category><![CDATA[웹 표준]]></category>

		<guid isPermaLink="false">http://www.miya.pe.kr/archives/47</guid>
		<description><![CDATA[보도자료: 2012년까지 장애인 13만여명에 IT보조기기 보급 이밖에 장애인이 공공부분의 인터넷 사이트를 손쉽게 이용할 수 있도록 `웹 접근성 준수&#8217;를 제도화하기 위해 올해안에 웹 접근성 국가표준을 개정하기로 했으며 공공기관은 물론 민간기관들의 참여를 이끌어내기 위해 `웹 접근성 품질 마크&#8217;를 적극적으로 부여하기로 했다. 정부 차원에서 장애인들의 IT 활용 활성화를 추진하고 있다는 기사가 났다. 웹 접근성에 대해 국가 차원의 관심과 [...]]]></description>
			<content:encoded><![CDATA[<h3>보도자료: <a href="http://www.hankyung.com/news/app/newsview.php?aid=2007081794168&amp;sid=0104&amp;nid=004&amp;ltype=1">2012년까지 장애인 13만여명에 IT보조기기 보급</a></h3>
<blockquote><p>이밖에 장애인이 공공부분의 인터넷 사이트를 손쉽게 이용할 수 있도록 `웹 접근성 준수&#8217;를 제도화하기 위해 올해안에 웹 접근성 국가표준을 개정하기로 했으며 공공기관은 물론 민간기관들의 참여를 이끌어내기 위해 `웹 접근성 품질 마크&#8217;를 적극적으로 부여하기로 했다.</p></blockquote>
<p>정부 차원에서 장애인들의 IT 활용 활성화를 추진하고 있다는 기사가 났다. 웹 접근성에 대해 국가 차원의 관심과 필요성이 더욱 늘어나게 되었다는 이야기이다. 좋던 싫던 관심이 있던 없던 웹 표준과 접근성은 점점 피할 수 없는 필수요소가 되어가고 있다. 장애인의 인터넷 접근 장치는 점점 늘어가는데 정보를 얻는 통로인 웹사이트가 그들을 소외시킨다면 정부의 이런 정책은 아무런 의미가 없을 것이다.</p>
<p>기사대로라면 2012년에는 접근성을 보장 여부가 13만명의 잠재 이용자를 잡느냐 놓치느냐를 판가름한다. 웹표준과 웹접근성의 가치가 보다 빠르게 늘어날 것이라는 기대를 해본다.</p>
]]></content:encoded>
			<wfw:commentRss>http://miya.pe.kr/2007/08/17/2012%eb%85%84%ea%b9%8c%ec%a7%80-%ec%9e%a5%ec%95%a0%ec%9d%b8-13%eb%a7%8c%ec%97%ac%eb%aa%85%ec%97%90-it%eb%b3%b4%ec%a1%b0%ea%b8%b0%ea%b8%b0-%eb%b3%b4%ea%b8%89/feed/</wfw:commentRss>
		<slash:comments>431</slash:comments>
		</item>
	</channel>
</rss>

