- html5
- html5/VA
- html5/canvas
- html5/drag-and-drop
- html5/form
- html5/geolocation
- html5/offline-web-application
- html5/others-api
- html5/outline
- html5/overview
- html5/richtext-edit
- html5/video&audio
- html5/web-storage
- html5/web-workers
- html5/webSqlDatabase
- html5/websocket
- html5/๋ฌธ์ ์
- html5practice/roundRect
- html5practice/์ฆ๊ฒจ์ฐพ๊ธฐ๋ชฉ๋ก๋ง๋ค๊ธฐ
1. ๋ฆฌ์นํ ์คํธ ํธ์ง ¶
- ๋ฆฌ์น ํ
์คํธ๋ : ์์์ ๊ฐ์ง ํ
์คํธ, ํ
์คํธ์ ํฐํธ, ์คํ์ผ, ์์, ๋ฌธ๋จ์ ๋ ฌ๋ฑ์ ํฌ๋งท์ ์ ์ฅํ๊ณ ์๋ค
- HTML5๋ ๋ฆฌ์นํ
์คํธ ํธ์ง์ฉ API๋ฅผ ํ์ค์ผ๋ก ๊ท์ ํ๋ค.
- ์ถ๊ฐ๋ API : contenteditable์์ฑ, ๋ฌธ์ designMode
- ๋ด์ฉ ํธ์ง์ด ๋ถ๊ฐ๋ฅํ ์์(div๋ฑ)๋ฅผ ํธ์งํ๊ฒ ํ๊ธฐ ์ํ API.
- contenteditable : ํน์ ์์์ ๋ด์ฉ๋ง ํธ์ง ๊ฐ๋ฅ
- designmode : ๋ฌธ์ ์ ์ฒด๋ฅผ ํธ์งํ ์ ์์
2. contenteditable ¶
* contenteditable : ๋ฌธ์์ด์ ๊ฐ์ผ๋ก ๊ฐ์ง, ""(null), "true" "false"
<div id="deit" contenteditable="true"></div>
<div id="deit" contenteditable></div>
- "false"์ด์ธ์ ๊ฐ์ ๊ฐ์ง ๋ ํด๋น ๋ฌธ์ ํธ์ง๊ฐ๋ฅ
- contenteditable์ ์ํ๋ ์์๋๋ฏ๋ก ํธ์ง๊ฐ๋ฅํ ์์ ํ์์ ์์๋ ๋ชจ๋ ํธ์ง๊ฐ๋ฅ
<div id="deit" contenteditable="true"></div>
<div id="deit" contenteditable></div>
- ํธ์ง ๋ถ๊ฐ-
<div id="deit" contenteditable="false"></div>
<div id="deit" contenteditable="false"></div>
- ํธ์ง ์ํ ๋ฐํ -
isContentEditable๋ก ํ์ฌ ํธ์ง๊ฐ๋ฅ ์์์์ ("true", "false", "inherit"๋ฐํ)
isContentEditable๋ก ํ์ฌ ํธ์ง๊ฐ๋ฅ ์์์์ ("true", "false", "inherit"๋ฐํ)
- ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํ ํธ์ง ์์ฑ ์ ํ๊ธฐ -
var editor = document.getElementById("editor");
if(editor.isContentEditable)
var editor = document.getElementById("editor");
if(editor.isContentEditable)
editor.contentEditable = "false";
3. designMode ¶
designMode : document๊ฐ์ฒด๊ฐ ๊ฐ์ง ์์ฑ์ ํ๋, 'on' 'off'๋ชจ๋ ๊ฐ์ง
window.document : ํ์ฌ ์นํ์ด์ง ์ ์ฒด ํธ์ง๊ฐ๋ฅ
iFrame์ contentDocument๋ฅผ ๋์ - iFrame์์ ๋ด์ฉ ํธ์ง๊ฐ๋ฅ
window.document : ํ์ฌ ์นํ์ด์ง ์ ์ฒด ํธ์ง๊ฐ๋ฅ
iFrame์ contentDocument๋ฅผ ๋์ - iFrame์์ ๋ด์ฉ ํธ์ง๊ฐ๋ฅ
4. ํธ์ง๊ฐ๋ฅ์์ญ์์ ํธ์งํ ๋ด์ฉ ๊ฐ์ ธ์ค๊ธฐ ¶
innerHTML : HTMLํ๊ทธ๋ฅผ ํฌํจํ ๋ฌธ์์ด
textContent : HTMLํ๊ทธ ์ ์ธ ์์ ๋ฌธ์์ด๋ง
textContent : HTMLํ๊ทธ ์ ์ธ ์์ ๋ฌธ์์ด๋ง
- innerHTML -
<div id="editor" contenteditabl></div>
var editor = document.getElementById("editor");
// innerHTML ์์ฑ์ ์ฝ์ด๋ค์
alert(editor.innerHTML);
<div id="editor" contenteditabl></div>
var editor = document.getElementById("editor");
// innerHTML ์์ฑ์ ์ฝ์ด๋ค์
alert(editor.innerHTML);
- textConetent -
5. ์ ํํ ๋ฒ์ ์กฐ์ ¶
- window๋ document๊ฐ์ฒด๊ฐ ๊ฐ์ง getSelection()๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ Selectionํ ๊ฐ์ฒด ์์ฑ
var selection = window.getSelection();
- ์ ํ ๋ฒ์์ DOM์์์ ๊ด๋ จ๋ API
- anchorNode : ์ ํ์ ์์ํ ์์น์ ์๋ ์์์ DOM๋
ธ๋ ๊ฐ์ ธ์ด
- anchorOffset : anchorNode ์์์ ์ ํ์ ์์ํ ์์น์ ์คํ์
๋ฐํ
- focusNode : ์ ํ์ ์ข
๋ฃํ ์์น์ ์๋ ์์์ DOM๋
ธ๋ ๊ฐ์ ธ์ด
- focusOffset : focusNode ์์์ ์ ํ์ ์ข
๋ฃํ ์์น์ ์คํ์
๊ฐ์ ธ์ด
- anchorNode : ์ ํ์ ์์ํ ์์น์ ์๋ ์์์ DOM๋
ธ๋ ๊ฐ์ ธ์ด
- ์ปค์ ์์น ์กฐ์
- collapse(parentNode, offset) : ์ง์ ํ ์์(parrentNode)์์ ์ง์ ํ ์์น(offset)์ผ๋ก ์ปค์๋ฅผ ์ด๋์ํจ๋ค
- collapseToStart() : ํ์ฌ ํ
์คํธ์ ๋งจ ์์ผ๋ก ์ปค์๋ฅผ ์ด๋์ํด
- collapseToEnd() : ์ ํ๋ ํ
์คํธ์ ๋งจ ๋ค๋ก ์ปค์๋ฅผ ์ด๋์ํด
- isCollapsed() : ํ
์คํธ๊ฐ ์ ํ๋์ง ์์๋๋ฐ ์ปค์๊ฐ ์์ ๋ true๋ฐํ
- collapse(parentNode, offset) : ์ง์ ํ ์์(parrentNode)์์ ์ง์ ํ ์์น(offset)์ผ๋ก ์ปค์๋ฅผ ์ด๋์ํจ๋ค
- Selection ๊ฐ์ฒด์ toString์ฌ์ฉํ๋ฉด ์ ํํ ๋ฒ์์ ๋ฌธ์์ด(HTML์ ์ธ)๊ฐ์ ธ์ด
alert(window.getSelection().toString());
6. ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ์คํ์ทจ์๊ธฐ๋ฅ ¶
- ์กฐ์ํ ๋ด์ฉ ์ด๋ ฅ ๊ธฐ๋ก undoManager๊ฐ ์ ์ฅ(์ต์์ ๊ฐ์ฒด) ์๋นํ ๊ฐ๋จ
- DOM๋ณ๊ฒฝ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์คํ ์ด๋ ฅ ๊ด๋ฆฌ ๊ฐํธ ์ข์
undoManager.add({
operation: "add-favorite",
id : 100
}, "์ฆ๊ฒจ์ฐพ๊ธฐ");id : 100
- ์คํ ์ทจ์ -
window.addEventListener("undo", function(event) {
window.addEventListener("undo", function(event) {
var data = event.data;
if(data.operation == "add-favorite") {
...
}, false); if(data.operation == "add-favorite") {
var id = data.id;
// ์ฆ๊ฒจ์ฐพ๊ธฐ๋ก๋ถํฐ์ ์ญ์ ์ฒ๋ฆฌ
}// ์ฆ๊ฒจ์ฐพ๊ธฐ๋ก๋ถํฐ์ ์ญ์ ์ฒ๋ฆฌ
...
...
7. ๊ด๋ จ ์ฌ์ดํธ ¶
<๊ณต์ ์ฌ์ดํธ>
http://www.quirksmode.org/dom/execCommand/
<๋ธ๋ก๊ทธ>
http://cafe.naver.com/webappdev.cafe?iframe_url=/ArticleRead.nhn?articleid=91
http://www.quirksmode.org/dom/execCommand/
<๋ธ๋ก๊ทธ>
http://cafe.naver.com/webappdev.cafe?iframe_url=/ArticleRead.nhn?articleid=91