<?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://www.yangkun.pe.kr/tag/%eb%b0%94%eb%a1%9c%ea%b0%80%ea%b8%b0/feed" rel="self" type="application/rss+xml" />
	<link>http://www.yangkun.pe.kr</link>
	<description>web developer</description>
	<lastBuildDate>Wed, 20 Jan 2010 01:04:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>웹 접근성 고려한 &#8220;관련사이트 바로가기&#8221; 구현 방법</title>
		<link>http://www.yangkun.pe.kr/post/801</link>
		<comments>http://www.yangkun.pe.kr/post/801#comments</comments>
		<pubDate>Tue, 12 Jan 2010 21:10:33 +0000</pubDate>
		<dc:creator>양군</dc:creator>
				<category><![CDATA[개발]]></category>
		<category><![CDATA[접근성]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[kwcag]]></category>
		<category><![CDATA[SELECT]]></category>
		<category><![CDATA[관련사이트]]></category>
		<category><![CDATA[바로가기]]></category>
		<category><![CDATA[새창]]></category>
		<category><![CDATA[웹접근성]]></category>

		<guid isPermaLink="false">http://www.yangkun.pe.kr/?p=801</guid>
		<description><![CDATA[웹 사이트의 메인화면이나 하단 영역에 흔히 쓰이는 관련 사이트 바로가기 UI요소가 있습니다. 보통, 콤보상자에 관련사이트 목록을 나열하고 사이트를 선택하면 새창으로 선택한 사이트가 열리도록 구성 합니다. 하지만 이런 방법은 웹 접근성에 문제가 있습니다. 이 글에서는 이런 UI요소를 웹 접근성을 준수하도록 단계별로 개선하는 방법을 설명합니다.]]></description>
			<content:encoded><![CDATA[<p>제목에서는 &#8220;관련사이트 바로가기&#8221;라고 했지만 정확히 이를 뭐라고 부르고 있는지 모르겠습니다. &#8220;백문이불여일견&#8221; !! 바로 보시는게 낫겠습니다.</p>
<div style="width: 400px; border: 1px solid #cccccc; margin: 10px auto; padding: 10px;">
<p>관련 사이트 바로가기</p>
<select>
<option>관련사이트 목록</option>
<option value="http://twitter.com/yangkun7">양군의 트위터</option>
<option value="http://picasaweb.google.com/yangkun7">건이네 웹앨범</option>
<option value="http://www.greenfarm.pe.kr/">푸른농장 (준혁,서영이네)</option>
</select>
</div>
<p>이런겁니다. 콤보박스가 나오고 목록에서 항목을 선택하면 새창으로 해당 사이트가 열립니다. 코드는 아래와 같습니다.</p>
<pre class="brush: xml">
&lt;!-- 코드 #1 --&gt;
&lt;p&gt;
관련 사이트 바로가기
&lt;select onchange=&quot;if(this.value != &#039;&#039;) window.open(this.value);&quot;&gt;
&lt;option value=&quot;&quot;&gt;관련사이트 목록&lt;/option&gt;
&lt;option value=&quot;http://twitter.com/yangkun7&quot;&gt;양군의 트위터&lt;/option&gt;
&lt;option value=&quot;http://picasaweb.google.com/yangkun7&quot;&gt;건이네 웹앨범&lt;/option&gt;
&lt;option value=&quot;http://www.greenfarm.pe.kr/&quot;&gt;푸른농장 (준혁,서영이네)&lt;/option&gt;
&lt;/select&gt;
&lt;/p&gt;
</pre>
<h3>#1. 문제점</h3>
<ul>
<li>SELECT 양식에 대한 설명이 필요합니다 . (KWCAG 1.0 <a href="http://www.wah.or.kr/kwcag/wcag_guide_12.asp">항목 3.3 온라인 서식 구성</a>)</li>
<li>키보드만 이용할 때, 해당 컨트롤로 포커스가 이동하고 이동 키(↓↑)를 이용해 그 목록을 보려 하면 바로 첫 번째 항목의 사이트로 이동해 버립니다. (KWCAG 1.0 <a href="http://www.wah.or.kr/kwcag/wcag_guide_7.asp">항목 2.4 키보드로만 운용 가능</a>)</li>
</ul>
<h3>#1. 개선</h3>
<ol>
<li>SELECT 양식에 대한 LABEL 추가</li>
<li>onchange 이벤트 제거</li>
<li>[이동] 버튼 추가</li>
<li>[이동] 버튼 클릭 시 해당 사이트로 이동하도록 변경.</li>
</ol>
<p>개선된 코드는 다음과 같습니다.</p>
<pre class="brush: xml">
&lt;!-- 코드 #2 --&gt;
&lt;p&gt;
&lt;label for=&quot;relSites&quot;&gt;관련사이트 바로가기&lt;label&gt;
&lt;select id=&quot;relSites&quot;&gt;
&lt;option value=&quot;&quot;&gt;관련사이트목록&lt;/option&gt;
&lt;option value=&quot;http://twitter.com/yangkun7&quot;&gt;양군의 트위터&lt;/option&gt;
&lt;option value=&quot;http://picasaweb.google.com/yangkun7&quot;&gt;건이네 웹앨범&lt;/option&gt;
&lt;option value=&quot;http://www.greenfarm.pe.kr/&quot;&gt;푸른농장 (준혁,서영이네)&lt;/option&gt;
&lt;/select&gt;
&lt;input type=&quot;button&quot; value=&quot;이동&quot; onclick=&quot;window.open(document.getElementById(&#039;relSites&#039;).value);&quot;/&gt;
&lt;/p&gt;
</pre>
<h3>#2. 문제점</h3>
<p>여전히 문제가 남아 있습니다.</p>
<ul>
<li>자바스크립트가 지원되지 않는 환경에서는 위의 기능을 사용할 수 없습니다. (KWCAG 1.0 <a href="http://www.wah.or.kr/kwcag/wcag_guide_13.asp">항목 4.1 신기술의 사용</a>)</li>
</ul>
<h3>#2. 개선</h3>
<ol>
<li>SELECT 양식 값을 전달할 수 있도록 FORM 삽입</li>
<li>SELECT 양식에 name 설정</li>
<li>SELECT 양식 값을 전달할 수 있도록 일반 버튼을 submi 버튼으로 변경</li>
<li>전달받은 URL로 이동할 수 있는 서버측 로직 구성</li>
</ol>
<p>개선된 코드</p>
<pre class="brush: xml">
&lt;!-- 코드 #3 --&gt;
&lt;p&gt;
&lt;form action=&quot;redirect.php&quot; method=&quot;post&quot; target=&quot;_blank&quot;&gt;
&lt;label for=&quot;relSites&quot;&gt;관련사이트 바로가기&lt;label&gt;
&lt;select id=&quot;relSites&quot; name=&quot;url&quot;&gt;
&lt;option value=&quot;http://twitter.com/yangkun7&quot;&gt;양군의 트위터&lt;/option&gt;
&lt;option value=&quot;http://picasaweb.google.com/yangkun7&quot;&gt;건이네 웹앨범&lt;/option&gt;
&lt;option value=&quot;http://www.greenfarm.pe.kr/&quot;&gt;푸른농장 (준혁,서영이네)&lt;/option&gt;
&lt;/select&gt;
&lt;input type=&quot;submit&quot; value=&quot;이동&quot;/&gt;
&lt;/form&gt;
&lt;/p&gt;
</pre>
<p>서버측 코드</p>
<pre class="brush: php">
&lt;?php
// redirect.php
// 필요하면 카운팅 로직 추가
header(&#039;Location: &#039; . $_POST[&#039;url&#039;]);
?&gt;
</pre>
<h3>개선점</h3>
<p>#3의 코드는 그대로 완벽한 것 같지만 개선의 여지가 남아 있습니다.</p>
<ul>
<li>코드대로 실행하면 선택한 사이트가 새창으로 열리게 되는데 이에 대해 알리는 부분이 없습니다. (KWCAG 1.0 <a href="http://www.wah.or.kr/kwcag/wcag_guide_9.asp">항목 2.6 반응시간의 조절기능</a>)</li>
<li>자바스크립트가 사용 가능한 환경에서는 굳이 서버 로직을 거치지 않고 선택한 사이트로 이동하게 하고 싶을 수도 있습니다.</li>
</ul>
<p>최종 개선 코드</p>
<pre class="brush: html">
&lt;!-- 코드 #4 --&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
function gotoUrl(id) {
window.open(document.getElementById(id).value);
return false;
}
&lt;/script&gt;
&lt;p&gt;
&lt;form action=&quot;redirect.php&quot; method=&quot;post&quot; target=&quot;_blank&quot; onsubmit=&quot;return gotoUrl(&#039;relSites&#039;);&quot;&gt;
&lt;label for=&quot;relSites&quot;&gt;관련사이트 바로가기&lt;label&gt;
&lt;select id=&quot;relSites&quot; name=&quot;url&quot;&gt;
&lt;option value=&quot;http://twitter.com/yangkun7&quot;&gt;양군의 트위터&lt;/option&gt;
&lt;option value=&quot;http://picasaweb.google.com/yangkun7&quot;&gt;건이네 웹앨범&lt;/option&gt;
&lt;option value=&quot;http://www.greenfarm.pe.kr/&quot;&gt;푸른농장 (준혁,서영이네)&lt;/option&gt;
&lt;/select&gt;
&lt;input type=&quot;image&quot; src=&quot;btn_move.gif&quot; alt=&quot;이동 (새창)&quot;/&gt;
&lt;/form&gt;
&lt;/p&gt;
</pre>
<h3>관련 지침</h3>
<ul>
<li><a href="http://www.yangkun.pe.kr/resources/kwcag2-0#211">(키보드 사용 보장) 모든 기능은 키보드만으로도 사용할 수 있어야 한다.</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.yangkun.pe.kr/post/801/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
