- 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