어떤 요소들에도 적용할 수 있는 글로벌 속성에 대하여 알아봅니다.

ACCESSKEY 속성

accesskey 속성은 바로가기 키(access key)를 지정한다. 컴퓨터의 기본 입력 장치는 마우스가 아니라 키보드이다. 따라서 문서에 있는 모든 요소는 키보드로 제어할 수 있어야 한다.

Html
<a href="http://www.google.com/" accesskey="g">Google</a>
  • accensskey 속성이 적용된 요소는 포커스를 받거나 실행이 이루어진다. input 요소에 적용되면 포커스를 받게 되고, a 요소에 적용되면 해당 키를 눌러 곧바로 목적지로 이동한다.
  • 속성값은 키보드에 있는 알파벳이나 숫자 중에서 원하는 문자를 선택하여 지정한다.
  • 하나의 요소에 두 개 이상의 문자를 정의할때는 띄어쓰기로 구분한다.
  • 바로가기 키의 중복을 방지하기 위해 영국 정부의 바로가기 키 권고안을 참조한다.
웹브라우저 윈도우 매킨토시
Internet Explorer Alt -
Firefox 2+ Alt + Shift Ctrl
Opera Shift + Esc  
Safari 3+ Alt Ctrl
Chrome Alt ( + Shift) Ctrl + Opt

지원 현황

인터넷익스플로우 파이어폭스 사파리 크롬 오페라
지원 지원 지원 지원 지원

CLASS 속성

class 속성은 스타일 시트에 정의된 클래스 이름을 지정한다.

Html
<h1 class="intro">Header 1</h1>
<p>A paragraph.</p>
<p class="important">Note that this is an important paragraph. :)</p>

지원 현황

인터넷익스플로우 파이어폭스 사파리 크롬 오페라
지원 지원 지원 지원 지원

DIR 속성

dir 속성은 텍스트 방향을 지정하는 속성이다. 텍스트는 두가지 방향으로 진행될 수 있다.

Html
<p dir="rtl">Write this text right-to-left!</p>
  • dir="ltr" : 텍스트를 좌에서 우로 표현한다.
  • dir="rtl" : 텍스트를 우에서 좌로 표현한다.
  • dir="auto" : 이 속성이 지정된 요소는 브라우저의 설정값을 따른다.

지원 현황

인터넷익스플로우 파이어폭스 사파리 크롬 오페라
지원 지원 지원 지원 지원

ID 속성

id 속성은 요소의 유일한 식별자이다.

Html
<h1 id="myHeader">Hello World!</h1>
<button onclick="displayResult()">Change text</button>

속성 값은 문서 내에서 유일한 값이어야 하며, 공백 문자를 갖지 않는 최소한 한 개의 문자를 포함해야 한다.

지원 현황

인터넷익스플로우 파이어폭스 사파리 크롬 오페라
지원 지원 지원 지원 지원

LANG 속성

lang 속성을 html요소에 설정하게 되면 상속의 특성이 있어 이하 모든 요소들에도 같은 값이 부여된다. 콘텐츠 안에서 다양한 휴먼 랭귀지를 사용하는 경우 특정 요소마다 각각 다시 선언할 수 있다. 웹 브라우저나 음성 브라우저와 같은 User Agents가 웹 문서에 쓰여진 언어를 올바로 해석할 수 있도록 도와준다.

검색엔진의 검색결과, 음성기기들의 발음등에 유효하게 쓰인다. 전체 언어 목록은 http://www.iana.org/assignments/language-subtag-registry 를 참조하라.

HTML5

Html
<html lang="ko">

ko는 한글이고 ko_KR은 남한의 한글입니다. 영어도 미국영어(en_US)와 영국영어(en_GB)가 있듯이 언어가 여러가지이면 세분화된다.

XHTML

XHTML1.0에서는 text/html인 경우에 lang과 xml:lang속성을 사용하고, XHTML1.1에서는 xml:lang속성만 사용한다.

Html
<html xml:lang="ko" lang="ko">

STYLE 속성

style 속성은 요소에 인라인 스타일을 지정한다.

Html
<h1 style="color:blue;text-align:center">This is a header</h1>
<p style="color:green">This is a paragraph.</p>

지원 현황

인터넷익스플로우 파이어폭스 사파리 크롬 오페라
지원 지원 지원 지원 지원

TABINDEX 속성

tabindex 속성은 탭 순서를 지정한다. 키보드 탭 키를 사용하여 탭 내비게이션 순서로 움직이고 이 순서를 바꿀 수 있는게 tabindex 속성이다. 탭 내비게이션의 순서는 포커스를 받는 순서와 다름 없다.

Html
<input type="text" tabindex="100">
<input type="password" tabindex="200">
  • 100,200,300 처럼 tabindex 값을 크게 잡아 중간에 다른 요소가 끼어들어 tabindex를 필요하게 되도 수정이 쉽게 하도록 한다.
  • 포커스가 생기지 않게 하려면 -1 로 값을 지정한다.
  • 탭 키를 누르면 낮은 속성값 → 높은 속성값 방향으로 진행되고 Shift와 탭키를 누르면 역방향으로 진행된다.

지원 현황

인터넷익스플로우 파이어폭스 사파리 크롬 오페라
지원 지원 지원 지원 지원

TITLE 속성

title 속성은 요소에 관한 제목을 지정한다. 여기에서 말하는 제목은 문서 제목처럼 내용을 대표하기 위한 이름이 아니라 특정 요소에 관한 추가정보를 의미한다. 추가적, 부가적, 조언적의 성격을 지니며 주로 특정 요소의 특성이나 성질을 설명하기 위한 용도로 사용되며, 거의 모든 요소에 사용할 수 있다.

  • 튤팁(tool tip) : 마우스를 링크된 텍스트나 입력 컨트롤 위에 대면, title 속성으로 지정된 텍스트가 풍선말 형태로 나타난다.
  • 음성 출력 : 내용을 음성으로 출력하는 보조기기가 title 속성으로 지정된 텍스트를 음성으로 출력한다.

title 예제

  • a 요소 : 링크가 어디를 향하는지, 링크를 누르면 어떤 현상이 발생하는지 설명할 때 요약 제목으로 구성된 목록에서 전체 제목을 제공할 때 사용한다.
    <a href="http://www.naver.com/" target="_blank" title="새창">naver</a>
    
  • Html
  • p 요소 : 문단에 관한 주석을 제공할 때 사용한다.
    <p title="이 내용은 다음 회기에 개정될 예정이다">
    
  • Html
  • img 요소 : 이미지 파일에 관한 추가 설명이 필요할 때 사용한다.
    <img src="shose.jpg" alt="어린이 등산화" title="사진 속 크기는 실제와 같습니다.">
    
  • Html
  • input 요소 : 입력 컨트롤에 관한 사용 설명이 필요할 때 사용한다.
    <input type="tel" title="숫자만 입력">
    
  • Html
  • abbr 요소 : 약어나 두문자어를 풀이할 때 사용한다. 중요도가 높은 약어는 title 속성으로 설명하지 않고 본문에 직접 출력하는 것이 좋다.
    <abbr title="HyperText Markup Language">HTML</abbr>
    
    요소에 대한 설명이나 주석으로 본문의 내용이 복잡해지지 않도록 title 속성을 사용하면 된다.
  • Html

지원 현황

인터넷익스플로우 파이어폭스 사파리 크롬 오페라
지원 지원 지원 지원 지원

 

 

 

 

글로벌 속성들 중에서 HTML5에서 추가된 속성들을 알아봅니다.

CONTENTEDITABLE 속성

contenteditable 속성은 지정된 요소들의 콘텐츠를 사용자가 편집할 수 있다. 또 선택하고 편집할 수 있는 콘텐츠 영역에 대해 수정한 내용을 반영할 수 있다.

Html
<p contenteditable="true">브라우저에서 수정해보세요!</p>
  • 이 속성을 지정하면 하위에 있는 모든 요소들에 영향을 미친다.
  • DOM 속성에서는 contentEditable이라고 표현하며 isContentEditable로 해당요소가 편집가능한지 확인할 수 있다.
  • 자바스크립트 사용해서document.designMode='on'이라고 지정을 해서 문서 전체가 편집 가능하게 만들수 있다.
  • 편집한 이후에 사용자가 변경한 내용이 DOM에 적용돼 있으므로 편집한 영역의 innerHTML(designMode로 편집 가능하다면 전체문서)을 서버로 보내 저장하고 적용할 수 있다.

활용

이 속성을 지정하면 하위에 있는 모든 요소들에 영향을 미친다.

브라우저에서 수정해 보세요

지원 현황

인터넷익스플로우 파이어폭스 사파리 크롬 오페라
지원 지원 지원 지원 지원

CONTEXTMENU 속성

contextmenu 속성은 HTML5에서 추가된 속성으로 컨텍스트 메뉴를 정의한다. 마우스 우측을 클릭하면 나오는 그 메뉴들이다.

Html
<p contextmenu="supermenu">This paragraph has a context menu called "supermenu" attached.</p>

<menu id="supermenu"> 
  <command label="Step 1: Write Tutorial" onclick="doSomething()"> 
  <command label="Step 2: Edit Tutorial" onclick="doSomethingElse()"> 
</menu>

아직 브라우저들이 지원하지 않는다.

DATA-*

data-* 속성은 HTML5에 추가된 속성으로 이 속성을 사용하면 마크업에서 스크립트로 정보를 전달할 수 있다. 어떤 요소든 임의의 속성을 넣을 수 있기 때문에 기존의 복잡한 단계를 거치지 않아도 된다.

Html
<div id="cat_1" data-id="1" data-name="나비">
...
</div>

자바스크립트를 이용한 커스텀 데이터 접근 방법

dataset 속성 접근법

dataset 속성의 값은 단순한 문자열 맵(연상배열)이지만 값을 읽고 쓸때는 data-라는 속성이름의 접두어를 생략할 수 있다.

DOM(getAttribute()메서드)을 이용

data-접두어를 포함하여 지정해야 한다.

JavaScript
var row = document.getElementById("cat_1");
row.dataset.age = "3";    //age 라는 커스텀 데이터 속성을 추가
alert(row.dataset.id);    //id 라는 커스텀 데이터 속성을 추가
alert(row.getAttribute("data-id"));    //getAttribute()일때는 접두어가 필요
delete row.dataset.age;    //data-age 속성 삭제

커스텀 데이터 속성을 사용한 팝업

팝업창을 만들때 a 요소에 onclick 이벤트를 사용하는 경우가 많다. 이는 동작과 내용을 분리하지 못해 다수의 링크를 상대로 같은 작업을 한다면 반복적인 작업에 시간을 낭비하게 되며 HTML은 필요 이상으로 커지게 된다.

Html
<!-- onclick을 이용한 팝업 -->
< a href="#" onclick="window.open('help/holiday_pay.html', WinName, 'width=300,height=300');">공휴일 급여 정책</a>

<!-- 접근성 개선 -->
< a href="help/holiday_pay.html" onclick="window.open('this.href', WinName, 'width=300,height=300');">공휴일 급여 정책</a>

이를 개선하기 위해 onclick 이벤트를 제거하고 각 링크를 설명할 수 있는 클래스를 부여해 준다.

Html
<a href="help/holiday_pay.html" class="popup">공휴일 급여 정책</a>

jQuery 선택자를 이용해서 popup 클래스를 가진 a 요소 전체를 선택한 다음, 각 요소의 click 이벤트에 핸들러를 붙였다. 이 코드는 각 요소의 click 메서드에 전달되어, 사용자가 링크를 클릭하면 실행된다. preventDefault 메서드는 이벤트의 기본 동작을 막는데 여기서는 브라우저가 링크를 따라가서 해당 페이지를 열지 못하게 한다.

JavaScript
var links = $("a.popup");

links.click(function(event) {
    event.preventDefault();
    window.open($(this).attr("href"));
});

팝업 창의 크기를 제어하기 위해서 커스텀 데이터를 사용한다.

Html
<a href="help/holiday_pay.html" data-width="600" data-height="400" title="공휴일 급여 정책 새창 열기" class="popup">공휴일 급여 정책</a>

click 이벤트 핸들러를 수정해서, 커스텀 데이터 속성에 넣어둔 정보를 꺼내어 windows.open()메서드에 전달한다.

JavaScript
$(function() {
    $(".popup").click(function(event) {
        event.preventDefault();
        var href = $(this).attr("href"),
        width = $(this).attr("data-width"),
        height = $(thhis).attr("data-height),
        popup = window.open(href, "popup", "height=" + height + ",width=" + width + "");
    });
});

지원 현황

인터넷익스플로우 파이어폭스 사파리 크롬 오페라
지원 지원 지원 지원 지원

DRAGGABLE 속성

draggable 속성은 HTML5에 새롭게 추가된 속성으로 이 속성이 들어간 요소는 drag-and-drop API를 사용해 드래그 할 수 있다.

Html
<div draggable="true">
    이 요소는 드래그가 가능하다
</div>
  • 링크와 이미지들은 기본적으로 드래그가능하다.
  • draggable="true" : 이 속성이 지정된 요소는 드래그앤 드롭이 가능하다.
  • draggable="false" : 이 속성이 지정된 요소는 드래그앤 드롭이 불가능하다.
  • draggable="auto" : 이 속성이 지정된 요소는 브라우저의 설정값을 따른다.

활용

아래의 박스를 드래그 해보자.

이 요소는 드래그가 가능하다

지원 현황

인터넷익스플로우 파이어폭스 사파리 크롬 오페라
IE9+ 지원 지원 지원 지원

DROPZONE

dropzone 속성은 HTML5에 새롭게 추가된 속성으로 드래그된 데이터를 드롭할 때 복사, 이동, 링크한다.

Html
<div dropzone="copy"></div>
  • dropzone="copy" : 요소에 아이템을 드롭하는 것은 드래그된 데이터를 복사함을 의미한다. 값을 명시하지 않으면 copy로 간주한다.
  • dropzone="move" : 요소에 아이템을 드롭하는 것은 드래그된 데이터를 이동함을 의미한다.
  • dropzone="link" : 요소에 아이템을 드롭하는 것은 원래의 데이터로 링크함을 의미한다.

아직 브라우저들이 지원하지 않는다.

HIDDEN

hidden 속성은 HTML5에 새롭게 추가된 속성으로 css의 hidden과는 다르게 의미상으로도 절대 브라우저에 노출되지 않는 것을 원칙으로 한다.

Html
<div id="main" hidden>
...
</div>

지원 현황

인터넷익스플로우 파이어폭스 사파리 크롬 오페라
미지원 지원 지원 지원 지원

SPELLCHECK

spellcheck 속성은 HTML5에서 새롭게 추가된 속성으로 텍스트 입력을 받는 폼에서 사용자가 틀린 텍스트를 입력하면 빨간색 밑줄로 알려주는 속성이다.

Html
<textarea spellcheck="true"></textarea>
  • spellcheck="true" : 철자와 문법을 검사한다.
  • spellcheck="false" : 철자와 문법을 검사하지 않는다.

아쉽게도 영어단어나 영어문장만 해당한다.

지원 현황

인터넷익스플로우 파이어폭스 사파리 크롬 오페라
IE10+ 지원 지원 지원 지원

TRANSLATE

translate 속성은 HTML5에 새롭게 추가된 속성으로 지정된 요소의 콘텐츠의 내용을 번역할지 안할지 설정한다.

Html
<p translate="no">Don't translate this!</p>
<p>This can be translated to any language.</p>
  • translate="yes" : 지정된 요소의 내용을 번역한다.
  • translate="no" : 지정된 요소의 내용을 번역하지 않는다.

아직 지원하는 브러우저가 없다.

출처: https://webdir.tistory.com/324?category=607030 [WEBDIR:티스토리]

'UI & UX > 퍼블리싱' 카테고리의 다른 글

HTML) 상호작용 요소  (0) 2022.07.06
HTML) 스크립트 요소  (0) 2022.07.06
HTML) 테이블 요소  (0) 2022.07.06
HTML) 내용 편집 요소  (0) 2022.07.06
HTML) 문단 요소  (0) 2022.07.06

사용자들과 상호작용하기 위해서 준비된 요소들에 대해 설명합니다.

인터랙티브 컨트롤

인터랙티브 컨트롤(interactive control)은 사용자가 입력한 데이터를 브라우저나 서버로 전송하기 위한 도구다. 과거에는 데이터 전송을 위해 폼이나 자바스크립트를 이용해야만 했다. 웹이 점점 애플리케이션화 되면서 웹 문서 어느 곳에서든 데이터 전송이 이루어질 필요가 있었고, 이를 위해 새롭게 details, summary, command, menu 요소가 제안되었다.

DETAILS 요소

details 요소는 HTML5에 새롭게 추가된 요소로서 세부사항(DETAILS)을 표시한다. 이 요소를 사용하면 세부사항을 선택적으로 보여줄 수 있다. 사용자가 요약(summary)을 선택하면 숨겨져 있던 세부사항이 나타나도록 구성하는 기법인데 W3C에서는 디스클로저 위젯(diclosure widget)이라고 부르고 있다.

Html
<details>
    <summary>Copyright 1999-2011.</summary>
    <p> - by Refsnes Data. All Rights Reserved.</p>
    <p>All content and graphics on this web site are the property of the company Refsnes Data.</p>
</details>
Copyright 1999-2011.

- by Refsnes Data. All Rights Reserved.

All content and graphics on this web site are the property of the company Refsnes Data.

  • summary 요소와 함께 사용된다.
  • 별도의 자바스크립트 없이 브라우저에서 직접 구현할 수 있게 되었다.

open 속성

open 속성은세부사항을 표시된 상태로 지정한다. 기본적으로 dtails 요소는 세부사항을 숨겨진 상태로 표시한다. 이것은 사용자 선택이 있어야만 세부사항을 보여주겠다는 의도이므로 사용자 선택없이 세부사항을 보여주고자 한다면 open 속성을 사용해야 한다.

Html
<details open="open">
    <summary>Copyright 1999-2011.</summary>
    <p> - by Refsnes Data. All Rights Reserved.</p>
    <p>All content and graphics on this web site are the property of the company Refsnes Data.</p>
</details>
Copyright 1999-2011.

- by Refsnes Data. All Rights Reserved.

All content and graphics on this web site are the property of the company Refsnes Data.

지원 현황

인터넷익스플로우 파이어폭스 사파리 크롬 오페라
미지원 미지원 SF6 지원 미지원

SUMMARY 요소

summary 요소는 요약(SUMMARY)을 표시한다. 여기에서의 요약은 details 요소로 제공되는 세부사항에 대한 요약 또는 제목을 의미한다.

  • "요약-세부"라는 관계를 제대로 전달하기 위해서는 details 요소 다음에 곧바로 summary 요소가 이어져야 한다.
  • 위의 details 요소 참조

MENU 요소

menu 요소는 메뉴(MENU)를 표시한다. 주로 메뉴바, 툴바, 컨텍스트 메뉴등에서 사용된다.

Html
<menu type="toolbar">
<li>
<menu label="File">
<button type="button" onclick="file_new()">New...</button>
<button type="button" onclick="file_open()">Open...</button>
<button type="button" onclick="file_save()">Save</button>
</menu>
</li>
<li>
<menu label="Edit">
<button type="button" onclick="edit_cut()">Cut</button>
<button type="button" onclick="edit_copy()">Copy</button>
<button type="button" onclick="edit_paste()">Paste</button>
</menu>
</li>
</menu>

아직 지원하는 브라우저가 없다

type 속성

type 속성은 메뉴 타입을 지정한다. 이 속성에 의해 menu 요소의 표현 형태가 결정되는데 아직 menu 요소를 지원하는 브라우저가 없어서 어떻게 표현되는지 정확하게 알 수 없다.

  • type="list" : 속성값을 list로 지정하면 리스트 메뉴가 만들어진다. 리스트 메뉴의 리스트는 일반적인 항목으로 구성된 리스트가 아니라 명령어 리스트이다. 이 값이 기본값이다.
  • type="context" : 속성값을 context로 지정하면 컨텍스트 메뉴가 만들어진다. 마우스 우측버튼을 눌렀을 때 나타나는 메뉴처럼 컨텍스트 메뉴는 특정 상황을 지원하기 위한 명령어 리스트만으로 구성된 메뉴를 의미한다.
  • type="toolbar" : 속성값을 toolbar로 지정하면 툴바 메뉴가 만들어진다. 툴바는 자주 이용하는 명령어를 별도로 모아두는 곳이다.

label 속성

label 속성은 메뉴 이름을 지정한다. 이 속성은 서브 메뉴를 포함하고 있는 메뉴에 적용된다.

COMMAND 요소

command 요소는 명령 버튼(COMMAND button)을 표시한다. 명령 버튼은 복사, 삭제, 인쇄 등 명령을 호출하는 버튼이다. 이 요소를 사용하면 form 요소로 정의되지 않는 곳에서도 컨트롤 요소를 제공할 수 있다.

Html
<menu>
    <command type="command" label="Save" onclick="save()">Save</command>
</menu>
  • 이 요소는 반드시 menu 요소내에서만 사용될 수 있다.

아직 지원하는 브라우저가 없다.

type 속성

type 속성은 명령타입을 지정한다. 이 속성에 의해 command 요소의 표현 형태가 결정된다.

  • type="command" : 속성값을 command로 지정하면 명령 버튼이 만들어진다.(기본값)
  • type="checkbox" : 속성값을 checkbox로 지정하면 체크박스가 만들어진다.
  • type="radio" : 속성값을 radio로 지정하면 라디오 버튼이 만들어진다.

icon 속성

icon 속성은 명령을 표현하기 아이콘을 지정한다. 속성값은 이미지 파일이 있는 주소다.

Html
<menu>
    <command type="radio" label="Left" icon="left.png" onclick="setAlign('left')">Left</command>
</menu>

radiogroup 속성

radiogroup 속성은 라디오 버튼이 적용된 command 요소의 그룹 이름을 지정한다. 이 속성은 command 요소 중 type="radio"인 command 요소에만 지정할 수 있으며 같은 속성값을 가진 command 요소가 서로 연결되어 작동할 수 있게 한다.

Html
<menu>
    <command type="radio" label="Left" radiogroup="alignment" onclick="setAlign('left')">Left</command>
</menu>

 

출처: https://webdir.tistory.com/321?category=607030 [WEBDIR:티스토리]

'UI & UX > 퍼블리싱' 카테고리의 다른 글

HTML) 글로벌 속성  (0) 2022.07.06
HTML) 스크립트 요소  (0) 2022.07.06
HTML) 테이블 요소  (0) 2022.07.06
HTML) 내용 편집 요소  (0) 2022.07.06
HTML) 문단 요소  (0) 2022.07.06

흔히 자바스크립트를 삽입할때 스크립트 요소를 사용합니다. 이에 대해 알아보며 곁들여 noscript 사용법도 알아봅니다.

SCRIPT 요소

script 요소는 클라이언트 사이드 스크립트와 같은 프로그래밍 코드를 HTML 문서 내에 직접 작성하거나 불러올때 사용한다. script 요소는 문서 내 어디든 놓일 수 있으며, 그 횟수도 제한이 없다.

문서의 머리에 script 요소를 두면 로딩과 함께 스크립트가 실행된다. 문서 전체에 걸쳐 기능을 제어해야 하거나 문서 본문을 처리하기 전에 스크립트가 실행될 필요가 있을때 문서의 머리에 둔다.

문서의 </body> 직전에 script 요소를 두게 되면 문서의 마지막에 스크립트가 실행된다. 이는 접속자들의 화면에 HTML의 구조와 CSS의 디자인을 먼저 적용하고 렌더링되기 때문에 문서 로딩의 체감시간을 줄일 수 있다.

Html
<head>
  <script src="js/vendor/modernizr-2.6.2.min.js"></script>
</head>

<body>
  <script>
  document.write("Hello!")
  </script>
</body>

type 속성

type 속성은 스크립트의 MIME 타입을 지정하는 속성이다. 프로그램 언어에 따라 브라우저에게 어떤 프로그래밍 언어인지 언질해 줘야 하는데, 이때 type 속성을 사용한다.

type 속성값은 미디어 타입을 지정하는 타입(type)과 프로그램 언어를 지정하는 서브타입(subtype)으로 구성되며, 이 둘은 슬래시(/)에 의해 구분된다. HTML5에서는 text/javascript가 기본값이므로 스크립트 타입이 이와 같다면 type 속성을 지정하지 않아도 된다. 아래에서 사용가능한 속성값을 나열한다.

  • type="text/javascript"
  • type="text/ecmascript"
  • type="text/vbscript"
  • type="application/javascript"
  • type="application/ecmascript"

defer 속성

defer 속성은 스크립트 실행의 연기(defer)를 지정한다. 브라우저가 src 속성을 만나게 되면 외부 스크립트 파일에 집중하기 위해 HTML 문서의 파싱을 잠시 미룬다. 외부 스크립트 파일에 집중하는 시간이 길어질수록 문서 로딩은 늦어질 수 밖에 없다.

그래서 스크립트 실행보다 문서 로딩 속도가 더 중요한 경우 저작자는 스크립트를 HTML 문서 하단에 작성하여 스크립트보다 문서의 구성 요소를 먼저 파싱하도록 마크업 하기도 하는데 이런 효과를 외부 스크립트 파일에도 적용하기 위해 defer 속성이 만들어졌다. 이 속성을 이용하면 브라우저가 HTML 문서를 전부 파싱한 다음에 스크립트를 실행할 수 있게 만들 수 있다.

Html
<script src="demo_defer.js" defer="defer"></script>

defer 속성은 외부 스크립트 파일에 한정되므로 반드시 src 속성이 함께 지정되어야 한다.

async 속성

async 속성은 스크립트의 비동기 실행을 지정한다. 이 속성은 defer 속성과 비슷하다. 다만 defer 속성이 HTML 문서의 파싱이 완료된 이후에 스크립트를 실행하는데 반해, async 속성은 HTML 문서의 파싱 완료와 상관없이 스크립트 파일을 수신한 이후에 실행한다는 점이 다르다.

브라우저가 HTML 문서를 파싱하다가 script 요소를 만나면 스크립트 파일을 수신하고 수신이 완료되면 그다음에 스크립트를 실행한다. 스크립트를 실행하는 동안에는 HTML 문서에 있는 다른 요소를 파싱하지 못하므로 전체적으로 HTML 문서의 파싱이 늦어지는 문제가 생긴다. 이점을 보완하고자 async 속성이 제안되었다.

브라우저가 async 속성을 만나면 스크립트 실행을 뒤로 미루고 우선 스크립트 파일의 수신과 HTML 문서의 파싱에 집중한다. 그런 다음 외부 스크립트 파일의 수신이 완료되었을 때 스크립트를 실행시킨다.

Html
<script src="demo_async.js" async="async"></script>

defer 속성과 마찬가지로 src 속성이 지정되어야만 async 속성이 유효하다.

NOSCRIPT 요소

noscript 요소는 스크립트 미지원을 표시한다. 이 요소는 스크립트를 지원하는 때에는 표시되지 않고 스크립트를 지원하지 않는 경우에만 표시된다.

스크립트 비활성화시 리다이렉트 시키기

브라우저에서 스크립트가 비활성화 되어 있을시에 meta 요소를 사용하여 활성화 방안을 제공하는 사이트나 적절한 곳으로 리다이렉트 시킨다.

Html
<head>
  <noscript>
    <meta http-equiv="Refresh" content="0; URL=http://www.enable-javascript.com/ko/">
  </noscript>
</head>

스크립트 비활성화시 메세지 띄우기

브라우저에서 스크립트가 비활성화 되어 있을시에 적절한 문구를 이용해 대체방안을 마련한다.

Html
<body>
    <noscript>
    이 사이트의 기능을 모두 활용하기 위해서는 자바스크립트를 활성화 시킬 필요가 있습니다.
    <a href="http://www.enable-javascript.com/ko/" target="_blank">
    브라우저에서 자바스크립트를 활성화하는 방법</a>을 참고 하세요.
    </noscript>
</body>

2010년 발행된 야후!의 네트워크를 조사한 한 연구에서는 자바스크립트를 비활성화 해 놓은 사용자가 전 세계 전체 트래픽의 약 1%에 해당한다는 결과를 내놓았다. 또 다른 연구에서도 10억 명에 달하는 방문자를 조사한 결과 유사한 수치가 나타났다. 이 두 연구에서는 다른 나라와 비교했을때 미국의 방문자가 가장 많이 자바스크립트를 비활성화해둔 것으로 나타났다. 이렇듯 자바스크립트를 비활성화 해놓은 사용자들의 수를 우려하지 않아도 될 만큼 적은 수라는 것을 알수 있다.

 

출처: https://webdir.tistory.com/322?category=607030 [WEBDIR:티스토리]

'UI & UX > 퍼블리싱' 카테고리의 다른 글

HTML) 글로벌 속성  (0) 2022.07.06
HTML) 상호작용 요소  (0) 2022.07.06
HTML) 테이블 요소  (0) 2022.07.06
HTML) 내용 편집 요소  (0) 2022.07.06
HTML) 문단 요소  (0) 2022.07.06

+ Recent posts