본문 바로가기
프로그래밍 놀이터/Web

[HTML5] 인라인 편집 - 기초, Tutorial, Sample Code

by 돼지왕 왕돼지 2012. 9. 8.
반응형



출처 : 하루 1시간 3일 만에 배우는 HTML5
 

이미지 출처 : http://caniuse.com/#feat=contenteditable


 인라인 편집은 현재 모든 브라우저가 지원하고 있습니다. 의외로 현재 HTML5 의 가장 많은 부분을 지원하는 Opera 의 mini 버전이 지원하지 않다는 것의 좀 의외군요.

인라인 편집

- contenteditable : 개별적인 HTML 요소를 편집 가능하게 만든다. ( true / false / inherit )
- designmode : 전체 문서를 편집 가능하게 만든다. ( on / off )
- spellcheck : 스펠링 체크 기능을 활성화한다.  ( true / false )



contenteditable 예제코드

<!DOCTYPE html>

<html>

<head>

<title>

Editable &lt;div&gt; Element

</title>

<script type="text/javascript">

function createLink()

{

var url = prompt( "Enter URL: ", "http://" );

if ( url )

document.execCommand( "createLink", false, url );

}

function showSource()

{

var content = document.getElementById( "div" ).innerHTML;

content.replace( /</g, '&lt;' );

content.replace( />/g, '&gt;' );

alert( content );

}

</script>

</head>

<body>

<h1> Editable &lt;div&gt; Element</h1>

<div>

<input type="button" value="Bold"

                            onclick="document.execCommand( 'bold', false, null );">

<input type="button" value="Italic"
                            onclick="document.execCommand( 'italic', false, null );">

<input type="button" value="Underline"
                            
onclick="document.execCommand( 'underLine', false, null );">

<input type="button" value="Add Link" onclick="createLink();">

<input type="button" value="Display Source" onclick="showSource();">

</div>

<br>

<div id="div" style="border:solidblack; height:300px; width=400px" contenteditable="true">

</div>

</body>

</html>



<결과>


- Add Link 의 경우 블럭을 씌우지 않고 Add Link 를 수행할 경우, 최하단과 같이 링크가 걸린 주소가 같이 입력됩니다.

 



designmode 예제코드

<!DOCTYPE html>

<html>

<head>

<title>

Editable &lt;div&gt; Element

</title>

<script type="text/javascript">

var iframe;

function loader()

{

iframe = document.getElementById( "content" );

iframe.contentDocument.designMode = "on";

}

function showSource()

{

var content = iframe.contentDocument.body.innerHTML;

content.replace( /</g, "&lt;" );

content.replace( />/g, "&gtl" );

alert( content );

}

function createLink()

{

var url = prompt( "Enter URL:", "http://" );

if ( url )

iframe.contentDocument.execCommand( "createLink", false, url );

}

</script>

</head>

<body onload="loader()">

<h1>Editable &lt;iframe&gt;</h1>

<div>

<input type="button" value="Bold"
                            onclick="iframe.contentDocument.execCommand( 'bold', false, null );">

<input type="button" value="Italic"
                            onclick="iframe.contentDocument.execCommand( 'italic', false, null );">

<input type="button" value="Underline"
                            onclick="iframe.contentDocument.execCommand( 'underLine', false, null );">

<input type="button" value="Add Link" onclick="createLink();">

<input type="button" value="Display Source" onclick="showSource();">

</div>

<br>

<iframe id="content" style="border:solidblack; height:300px; width=400px"
                       src="about:blank">

</iframe>

</body>

</html>


- 한 HTML 소스 안에 있는 인라인 편집을 이용할 떄는 document 객체를 이용하여 접근하지만, iframe 을 사용한 인라인 편집을 이용할 떄는 contentDocument 객체를 이용하여 접근합니다.


<결과>

 

 



spellCheck 예제코드

<!DOCTYPE html>

<html>

<head>

<title>

Spell Check

</title>

</head>

<body>

<h1>Spell Check</h1>

<div id="spell_check_true" contenteditable="true" spellcheck="true"
                   style="border:solidblack; width:200px; height:200px">

</div>

<div id="spell_check_false" contenteditable="true" spellcheck="false"
                   style="border:solidblack; width:200px; height:200px">

</div>

</body>

</html>



<결과 1>



<결과 2>




도움이 되셨다면 손가락 꾸욱~ ( 로그인 필요 없음 ) 



 
반응형

댓글