대상 사이트 에서 url 창에 넣어 실행 하거나 즐겨 찾기로 설정 하여 사용 하면 됨. 



javascript: function naver(q){ void(z=q.body.appendChild(q.createElement('script'))); void(z.language='javascript'); void(z.type='text/javascript'); void(z.src='http://userscripts.org/scripts/source/61326.user.js');} function selfw(w) { try{naver(w.document);} catch(e){} for (var i =0; i <w.frames.length; i++) { try{ selfw(w.frames[i]); } catch(e){} } } selfw(self);(function() { var e, i, all; document.onselectstart = null; document.oncontextmenu = null; all = document.getElementsByTagName("*"); for (i = 0; i < all.length; i += 1) { e = all[i]; e.onselectstart = null; e.oncontextmenu = null; } })();

Posted by 사라링


GET은 주소줄에 값이 ?뒤에 쌍으로 이어붙고 POST는 숨겨져서(body안에) 보내진다.

GET은 URL에 이어붙기 때문에 길이제한이 있어서 많은양의 데이터는 보내기 어렵고 POST는 많은 양의 보내기에도 적합하다.(역시 용량제한은 있지만)

즉 http://url/bbslist.html?id=5&pagenum=2 같이 하는 것이 GET방식이고 form을 이용해서 submit을 하는 형태가 POST입니다.

처음 배울때 배운건 이정도뿐이었던 것 같습니다. 위 내용은 맞는말이긴 하지만 이로썬 해결안되는 문제가 있습니다. 그건 언제 GET을 쓰고 언제 POST를 써야 하는가에 대한 문제였습니다. 이건 신입일때 꽤 오랫동안 생각하고 있었던 문제이기도 하는데 딱히 가르쳐 주는 곳은 없었습니다. 지금와서 보면 책에 이에 대해 나와있는 책들이 상당히 많이 있습니다만 웹표준에서도 그러하듯이 현업의 개발에서는 "원래의 목적에 맞게 기술을 사용하고 있는가?"에 대해서는 크게 관심이 없고 "어떤 기술이든 기능을 구현할 수 있는가?"에만 관심을 가지는 것이 전반적으로 깔려있기 때문에 이런 부분에 대해서 관심을 가지는 개발자는 빈도수로 봤을때 그리 많지 않은 듯 합니다. 어쨌든 쉽게 말하면 클라이언트에서 서버로 데이터를 전송하려면 GET 아니면 POST밖에 없습니다.(사실 HTTP에는 PUT, DELETE등등 몇가지 더 있지만 그건 이글의 범주에서 벗어나서 언급하지 않습니다. 사실은 잘 몰라서 ㅡ..ㅡ HTTP 1.1 스펙  참조)


id를 넘겨서 게시판의 리스트를 가져온다고 하면 당연히 GET을 쓸 것이고 글을 작성한다고 하면 POST를 작성하는 것이 일반적입니다. 전달해야 될 양이 많을 경우에는 고민없이 POST를 쓰게 되지만 양이 많지 않은 경우에는 GET도 되고 POST도 되기 때문에 고민이 시작됩니다. GET을 써야하나 POST를 써야하나. GET을 쓰면 URL이 깔끔해 지는 효과도 있기 때문에 작은 양을 여러개 전달해야 할 경우에는 POST를 써야하는가 하는 고민을 하게됩니다.(상당히 명백한 차이인듯 하면서 실제로 개발하다보면 고민하게 되는 경우가 좀 있더군요. 저만 그런지 모르겠지만...)



Image by dbking  via Flickr 


여기서 위의 언급한 차이점 외에 GET과 POST의 중요한 개념이 있습니다.


GET은 가져오는 것이고 POST는 수행하는 것입니다.


이 개념만 잘 생각하고 있으면 상황에 따라서 어느정도 선택을 할 수 있습니다.(물론 그래도 좀 고민되는 예외상황들은 있게 마련이죠.) 좀 자세히 설명하면 GET은 Select적인 성향을 가지고 있습니다. GET은 서버에서 어떤 데이터를 가져와서 보여준다거나 하는 용도이지 서버의 값이나 상태등을 바꾸지 않습니다. 게시판의 리스트라던지 글보기 기능 같은 것이 이에 해당하죠.(방문자의 로그를 남긴다거나 글읽은 횟수를 올려준다거나 하는건 예외입니다.) 반면에 POST는 서버의 값이나 상태를 바꾸기 위해서 사용합니다. 글쓰기를 하면 글의 내용이 디비에 저장이 되고 수정을 하면 디비값이 수정이 되죠. 이럴 경우에 POST를 사용합니다. 




이 얘기를 하면 어느곳에서곤 반드시 예시로 나오는 것이 Google의 Accelerator 사건입니다.(대표적으로 예를 들게 이거밖에 없나봅니다. 항상 거론되는걸 보면...) Accelerator라는 것은 그이름대로 웹서핑의 속도를 향상시킬 목적으로 구글이 발표한 것이었습니다. 어떤 웹사이트에 갔을때 페이지에 있는 URL등을 Accelerator가 미리 모두 클릭해봐서 사용자가 해당 URL로 이동하기 전에 이미지등의 미리 받아놓을 수 있는 것들을 받아놓는 역할을 해서 웹서핑의 체감속도를 높여주는 것이 목적이었습니다. 캐시때문에 한번 방문한 사이트는 더 빨리 뜨는 것을 이용한 것이죠.


구글러들은 위에서 언급한 GET과 POST의 개념을 확실히 이해하고 이를 당연하다고 생각하는 사람들이었을 테니 이것이 문제가 될꺼라고는 전혀 생각지 못한듯 합니다. 하지만 현실은 그렇지 않죠. 실제 많은 개발자들은 GET과 POST를 용도구분없이 혼용해서 사용했고 Delete같은 곳에도 GET방식을 편의대로 이용한 것입니다. Accelerator는 이것을 구분하지 못하니 URL만 보였다 싶으면 냅다 클릭을 해댄 것이고 사용자가 클립한 것이 아닌 Bot이 직접 URL로 접근해버리자 해당 데이터들은 Delete를 수행해버려서 메일이나 게시글이 마구 지워지는 사태가 발생하였습니다. 좋은 의도였는데 상당히 안좋은 결과가 되었죠. 우리가 모두 이걸 지켰다면 훨씬 좋은 웹 환경이 됐을 텐데요.


그리고 가져오는 곳에 GET을 사용해야 하는 이유가 하나 더 있습니다. 얼마전에도 관련해서 포스팅한 적이 있지만 웹의 핵심이라고 할 수 있는 Link문제입니다. 기본적으로 웹에서 모든 리소스는 Link할 수 있는 URL을 가지고 있어야 합니다.(퍼머링크(permalink)1퍼머링크라면 더 좋겠지만 꼭 퍼머링크가 아니라고 하더라도) 그래야 Link를 할 수 있으니까요. 쉽게 말하면 어떤 페이지를 보고 있을때 다른 사람한테 그 주소를 주기 위해서 주소창의 URL을 복사해서 줄 수 있어야 한다는 것입니다. POST를 할 결우에는 값이 내부적으로 전달되기 때문에 URL만 전달할 수 없죠. 글을 저장하는 경우에는 URL을 제공할 필요가 없기 때문에 POST를 해도 상관이 없는 것이고요.


다른 것들에서도 그렇듯이 GET과 POST도 그냥 만들어진 것이 아니기 때문에 스펙에 정의된 용도대로 사용한다면 위에 언급한대로 부가적으로 얻을 수 있는 이익이 많이 있고 전체 웹을 생각해도 올바르다고 생각합니다.

Footnote.

는 인터넷에서 특정 페이지의 고유한 URL 주소를 뜻한다. 이 주소는 어떤 상황에도 관계없이 항상 동일한 내용을 가지는 페이지로 링크된다는 의미에서, 고유(permanent)한 주소라는 뜻의 permanent link를 줄여 만든 말이다. 한국어로 고유링크, 고유주소 등으로 부르기도 한다. - Wikipedia 발췌 - [Back]


그리고 가져오는 곳에 GET을 사용해야 하는 이유가 하나 더 있습니다. 얼마전에도 관련해서 포스팅한 적이 있지만 웹의 핵심이라고 할 수 있는 Link문제입니다. 기본적으로 웹에서 모든 리소스는 Link할 수 있는 URL을 가지고 있어야 합니다.(퍼머링크(permalink)1퍼머링크라면 더 좋겠지만 꼭 퍼머링크가 아니라고 하더라도) 그래야 Link를 할 수 있으니까요. 쉽게 말하면 어떤 페이지를 보고 있을때 다른 사람한테 그 주소를 주기 위해서 주소창의 URL을 복사해서 줄 수 있어야 한다는 것입니다. POST를 할 결우에는 값이 내부적으로 전달되기 때문에 URL만 전달할 수 없죠. 글을 저장하는 경우에는 URL을 제공할 필요가 없기 때문에 POST를 해도 상관이 없는 것이고요.


다른 것들에서도 그렇듯이 GET과 POST도 그냥 만들어진 것이 아니기 때문에 스펙에 정의된 용도대로 사용한다면 위에 언급한대로 부가적으로 얻을 수 있는 이익이 많이 있고 전체 웹을 생각해도 올바르다고 생각합니다.

Footnote.

는 인터넷에서 특정 페이지의 고유한 URL 주소를 뜻한다. 이 주소는 어떤 상황에도 관계없이 항상 동일한 내용을 가지는 페이지로 링크된다는 의미에서, 고유(permanent)한 주소라는 뜻의 permanent link를 줄여 만든 말이다. 한국어로 고유링크, 고유주소 등으로 부르기도 한다. - Wikipedia 발췌 - [Back]

Posted by 사라링

// 부모창에 값 넘겨 주기 

window.opener.document.getElementById("sqlInput").value=result;

// 팝업창 닫기 
window.open("about:blank","_self").close();

   // self.closed() ; 는 일부 브라우져 에서 작동을 안한다. 

Posted by 사라링

tipJS Javascript MVC Framework Guide

1. tipJS JavaScript MVC Framework 개요

tipJS JavaScript MVC Framework 는 작고 Simple하며 강력한 JavaScript MVC Framework 입니다.
당신은 tipJS 를 이용해 복잡한 구조의 Web Application 을 Controller로 제어되는 Model과 View로 간단하게 구현할 수 있습니다.tipJS JavaScript MVC Framework로 당신의 Web Site의 Maintenance 효율을 월등히 높힐 수 있을 것입니다.

2. tipJS JavaScript MVC Framework Features

  • 복잡한 JavaScript Application을 MVC Pattern 형태로 구현할 수 있습니다.
  • 독립된 작동을 위해 JavaScript Navtive Code 로 개발되어 어떠한 외부 Library도 필요로 하지 않습니다.
  • 다양한 Browser와 호환됩니다.(IE 7/8/9, Chrome, Firefox, Safari, etc…)
  • 다양한 외부 JavaScript Library 와 호환됩니다.(JQuery, ExtJS, etc…)
  • Browser Cache를 간단하게 제어할 수 있습니다.
  • 외부 JavaScript Library를 효율적으로 관리할 수 있습니다.
  • Model과 View 만이 아닌 다양한 Timing에서 당신의 Application을 제어할 수 있습니다.
  • Simple한 HTML Template 기능을 지원하여 사용자 View 를 간단히 생성할 수 있습니다.(version 1.10 부터 지원)
  • tipJS JavaScript MVC Framework는 최소한의 Rule에 의해 작동하므로 개발형식이 자유롭습니다.
  • etc…

3. tipJS JavaScript MVC Framework 동작 개념도

tipJS JavaScript MVC Framework structure

tipJS JavaScript MVC Framework structure

tipJS JavaScript MVC Framework Folder

tipJS MVC Framework Folder

4. tipJS JavaScript MVC Framework 시작하기

4.1 HelloWorld Application (without HTML Template)

Template를 사용하지 않을 경우 Folder Structure는 아래의 구조를 권장합니다.

View this example (without HTML Template)

4.2 HelloWorld Application (with HTML Template)

Template를 사용할 경우 Folder Structure는 아래의 구조를 권장합니다.

View this example (with HTML Template)

5. Reference

6. tipJS.com – JavaScript MVC Framework Examples

 

'자바스크립트' 카테고리의 다른 글

GET OR POST 확실히 나누어 쓰자  (0) 2012.11.02
팝업창 닫기 // close  (0) 2012.09.26
순수 HTML typing 게임  (0) 2012.08.16
자바 스크립트를 이용 할때 꼭 한번 읽어야 할것  (0) 2012.06.20
물고기 소스  (0) 2012.06.15
Posted by 사라링

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

<script type="text/javascript">

     var words = [ "accept-charset", "accept", "accesskey", "action", "align",

               "alink", "alt", "applicationname", "archive", "autoFlush", "axis",

               "background", "behavior", "bgcolor", "bgproperties", "border",

               "bordercolor", "bordercolordark", "bordercolorlight",

               "borderstyle", "buffer", "caption", "cellpadding", "cellspacing",

               "char", "charoff", "charset", "checked", "cite", "class",

               "classid", "clear", "code", "codebase", "codetype", "color",

               "cols", "colspan", "compact", "content", "contentType", "coords",

               "data", "datetime", "declare", "defer", "dir", "direction",

               "disabled", "dynsrc", "encoding", "enctype", "errorPage",

               "extends", "face", "file", "flush", "for", "frame", "frameborder",

               "framespacing", "gutter", "headers", "height", "href", "hreflang",

               "hspace", "http-equiv", "icon", "id", "import", "info",

               "isErrorPage", "ismap", "isThreadSafe", "label", "language",

               "leftmargin", "link", "longdesc", "loop", "lowsrc", "marginheight",

               "marginwidth", "maximizebutton", "maxlength", "media", "method",

               "methods", "minimizebutton", "multiple", "name", "nohref",

               "noresize", "noshade", "nowrap", "object", "onabort", "onblur",

               "onchange", "onclick", "ondblclick", "onerror", "onfocus",

               "onkeydown", "onkeypress", "onkeyup", "onload", "onmousedown",

               "onmousemove", "onmouseout", "onmouseover", "onmouseup", "onreset",

               "onselect", "onsubmit", "onunload", "page", "param", "profile",

               "prompt", "property", "readonly", "rel", "rev", "rows", "rowspan",

               "rules", "runat", "scheme", "scope", "scrollamount", "scrolldelay",

               "scrolling", "selected", "session", "shape", "showintaskbar",

               "singleinstance", "size", "span", "src", "standby", "start",

               "style", "summary", "sysmenu", "tabindex", "target", "text",

               "title", "topmargin", "type", "urn", "usemap", "valign", "value",

               "valuetype", "version", "vlink", "vrml", "vspace", "width",

               "background", "background-attachment", "background-color",

               "background-image", "background-position", "background-repeat",

               "baseline", "bbox", "border", "border-collapse", "border-color",

               "border-spacing", "border-style", "border-top", "border-right",

               "border-bottom", "border-left", "border-top-color",

               "border-right-color", "border-bottom-color", "border-left-color",

               "border-top-style", "border-right-style", "border-bottom-style",

               "border-left-style", "border-top-width", "border-right-width",

               "border-bottom-width", "border-left-width", "border-width" ];

     var divWordArr;

     var cbArr;

     var countDrop = 0;

     var countLife = 10;

     var flagLoop = false;


     function init() {

          var divWord00 = document.getElementById("word00");

          var divWord01 = document.getElementById("word01");

          var divWord02 = document.getElementById("word02");

          var divWord03 = document.getElementById("word03");

          var divWord04 = document.getElementById("word04");


          var divWord05 = document.getElementById("word05");

          var divWord06 = document.getElementById("word06");

          var divWord07 = document.getElementById("word07");

          var divWord08 = document.getElementById("word08");

          var divWord09 = document.getElementById("word09");


          var divWord10 = document.getElementById("word10");

          var divWord11 = document.getElementById("word11");

          var divWord12 = document.getElementById("word12");

          var divWord13 = document.getElementById("word13");

          var divWord14 = document.getElementById("word14");


          var divWord15 = document.getElementById("word15");

          var divWord16 = document.getElementById("word16");

          var divWord17 = document.getElementById("word17");

          var divWord18 = document.getElementById("word18");

          var divWord19 = document.getElementById("word19");


          var cb00 = document.getElementById("cb00");

          var cb01 = document.getElementById("cb01");

          var cb02 = document.getElementById("cb02");

          var cb03 = document.getElementById("cb03");

          var cb04 = document.getElementById("cb04");


          var cb05 = document.getElementById("cb05");

          var cb06 = document.getElementById("cb06");

          var cb07 = document.getElementById("cb07");

          var cb08 = document.getElementById("cb08");

          var cb09 = document.getElementById("cb09");


          divWordArr = [ divWord00, divWord01, divWord02, divWord03, divWord04,

                    divWord05, divWord06, divWord07, divWord08, divWord09,

                    divWord10, divWord11, divWord12, divWord13, divWord14,

                    divWord15, divWord16, divWord17, divWord18, divWord19 ];


          cbArr = [ cb00, cb01, cb02, cb03, cb04, cb05, cb06, cb07, cb08, cb09 ];


          for ( var i = 0; i < divWordArr.length; i++) {

               var rndWords = parseInt(Math.random() * words.length);

               divWordArr[i].innerHTML = words[rndWords];

               divWordArr[i].style.top = "-20px";

               var rndLeft = parseInt(Math.random() * 380 + 20);

               divWordArr[i].style.left = rndLeft + "px";


          }

          showCountLife(countLife);


     }

     function btnKeyPress(event) {

          if (event.keyCode == 13) {

               removeSameWord();

          }

     }

     function removeSameWord() {

          var strType = document.getElementById("txtType").value;

          document.getElementById("txtType").value = "";

          for ( var i = 0; i < countDrop; i++) {

               var strWord = divWordArr[i].innerHTML;

               if (strType == strWord

                         && divWordArr[i].style.visibility == "visible") {

                    divWordArr[i].style.visibility = "hidden";

                    break;

               }

          }

     }


     function timedCount() {

          var rndCountDrop = Math.random();

          if (rndCountDrop < 0.02 && countDrop < 20) {

               countDrop++;

          }


          for ( var i = 0; i < countDrop; i++) {

               downDiv(divWordArr[i]);

          }


          for ( var i = 0; i < countDrop; i++) {

               var strTop = divWordArr[i].style.top;

               var strVisible = divWordArr[i].style.visibility;


               var topBuff = parseInt(strTop.substring(0, strTop.length - 2));

               if (topBuff > 350 && divWordArr[i].style.visibility == "visible") {

                    divWordArr[i].style.visibility = "hidden";

                    countLife--;

                    showCountLife(countLife);

               }


          }


          if (countLife <= 0) {

               var btnStart = document.getElementById("btnStart");

               btnStart.value = "start";

               flagLoop = false;

               alert("YOU LOSE");

               return;

          }

          if (isAllRemove()) {

               alert("YOU WIN");

               return;

          }


          if (countDrop >= 20) {

               var strTop = divWordArr[20 - 1].style.top;

               var topBuff = parseInt(strTop.substring(0, strTop.length - 2));

               if (topBuff > 350) {

                    var btnStart = document.getElementById("btnStart");

                    btnStart.value = "start";

                    flagLoop = false;

                    alert("YOU WIN");

                    return;

               }

          }

          t = setTimeout("timedCount()", 40);

     }

     function isAllRemove() {

          for ( var i = 0; i < divWordArr.length; i++) {

               if (divWordArr[i].style.visibility == "visible") {

                    return false;

               }

          }

          return true;

     }

     function showCountLife(paramLife) {

          for ( var i = 0; i < cbArr.length; i++) {

               cbArr[i].checked = false;

          }

          for ( var j = 0; j < paramLife; j++) {

               cbArr[j].checked = true;

          }

     }


     function btnStart() {

          if (flagLoop)

               return;

          var btnStart = document.getElementById("btnStart");

          btnStart.value = "Looping";

          flagLoop = true;

          timedCount();

     }

     function downDiv(div) {

          var str = div.style.top;

          var topBuff = parseInt(str.substring(0, str.length - 2));

          topBuff += 1;

          div.style.top = topBuff + "px";

     }

</script>

</head>

<body onload="init()">

     <div style="position: absolute; left: 10px; top: 10px;">

          <input id="cb00" type="checkbox" /><br /> <input id="cb01"

               type="checkbox" /><br /> <input id="cb02" type="checkbox" /><br />

          <input id="cb03" type="checkbox" /><br /> <input id="cb04"

               type="checkbox" /><br /> <input id="cb05" type="checkbox" /><br />

          <input id="cb06" type="checkbox" /><br /> <input id="cb07"

               type="checkbox" /><br /> <input id="cb08" type="checkbox" /><br />

          <input id="cb09" type="checkbox" /><br />

     </div>

           ????? ????????-->

     <input id="txtType" type="text" onkeypress="btnKeyPress(event)" />

     <input id="btnStart" value="start" type="button" onclick="btnStart()" />

     <div id="word00"

          style="position: absolute; left: 200px; top: -20px; visibility: visible;"></div>

     <div id="word01"

          style="position: absolute; left: 200px; top: -20px; visibility: visible;"></div>

     <div id="word02"

          style="position: absolute; left: 200px; top: -20px; visibility: visible;"></div>

     <div id="word03"

          style="position: absolute; left: 200px; top: -20px; visibility: visible;"></div>

     <div id="word04"

          style="position: absolute; left: 200px; top: -20px; visibility: visible;"></div>



     <div id="word05"

          style="position: absolute; left: 200px; top: -20px; visibility: visible;"></div>

     <div id="word06"

          style="position: absolute; left: 200px; top: -20px; visibility: visible;"></div>

     <div id="word07"

          style="position: absolute; left: 200px; top: -20px; visibility: visible;"></div>

     <div id="word08"

          style="position: absolute; left: 200px; top: -20px; visibility: visible;"></div>

     <div id="word09"

          style="position: absolute; left: 200px; top: -20px; visibility: visible;"></div>



     <div id="word10"

          style="position: absolute; left: 200px; top: -20px; visibility: visible;"></div>

     <div id="word11"

          style="position: absolute; left: 200px; top: -20px; visibility: visible;"></div>

     <div id="word12"

          style="position: absolute; left: 200px; top: -20px; visibility: visible;"></div>

     <div id="word13"

          style="position: absolute; left: 200px; top: -20px; visibility: visible;"></div>

     <div id="word14"

          style="position: absolute; left: 200px; top: -20px; visibility: visible;"></div>



     <div id="word15"

          style="position: absolute; left: 200px; top: -20px; visibility: visible;"></div>

     <div id="word16"

          style="position: absolute; left: 200px; top: -20px; visibility: visible;"></div>

     <div id="word17"

          style="position: absolute; left: 200px; top: -20px; visibility: visible;"></div>

     <div id="word18"

          style="position: absolute; left: 200px; top: -20px; visibility: visible;"></div>

     <div id="word19"

          style="position: absolute; left: 200px; top: -20px; visibility: visible;"></div>







</body>

</html>


'자바스크립트' 카테고리의 다른 글

팝업창 닫기 // close  (0) 2012.09.26
자바스크립트 MVC 패턴 구현 하기.  (0) 2012.08.20
자바 스크립트를 이용 할때 꼭 한번 읽어야 할것  (0) 2012.06.20
물고기 소스  (0) 2012.06.15
document.createElement  (1) 2012.06.14
Posted by 사라링

접근성을 해치지 않는 자바스크립트의 사용
자바스크립트에 대한 잘못된 생각
자바스크립트 없이는 개발을 할 수 없다?
많은 개발자들이 자바스크립트가 없이는 개발을 할 수 없다고 생각한다. 그만큼 자바스크립트를 일상적으로 많이 사용하지만 자바스크립트를 과용하는 경우가 많다는 것이다. 자바스크립트는 클라이언트 환경에서 작동하기 때문에 핵심 기능에 사용해서는 안된다. 핵심 기능은 서버사이드 언어로 처리를 하고 자바스크립트는 그 옆에서 UI구성을 위해서 도와주는 역할을 해야 한다. 바꿔 말하면 자바스크립트의 도움 없이도 핵심 기능은 작동을 해야 한다. 먼저 자바스크립트없이 HTML과 서버사이드 언어만으로 기능이 작동 되게 개발을 하고 자바스크립트를 이용해서 좋은 UI나 유효성 검사 등을 추가하는 순서로 만들어야 한다. 만약 이러한 방식으로 구현되지 않고 자바스크립트를 핵심 기능의 일부로 사용하면 접근성, 사용성이 떨어지는 것 뿐만 아니라 보안도 떨어지고 데이터의 무결성도 보장되지 않는다.
자바스크립트가 작동하지 않는 환경도 고려를 해 줘야 하는가?
자바스크립트가 작동하지 않는 환경이 일반적인 경우는 아니지만 스크립트를 사용할 수 없는 환경에 대한 고려는 필요하다. 실제로 브라우저들은 서로 자바스크립트 엔진이 다르기 때문에 개발 환경에서는 잘 작동하던 기능이 어떤 사용자 환경에서는 작동하지 않을 수 있다. 그리고 사용자 중에서도 보안이나 네트웍 전송량 등의  이유로 스스로 자바스크립트 기능을 끄고 사용하는 경우도 있다. 실제로 야후에서 분석한 결과에 따르면 약 2%정도의 사용자가 자바스크립트를 사용할 수 없는 상황에서 야후 사이트를 이용한다고 한다. 또한 WEB AIM에서 스트린 리더 사용자를 대상으로 한 설문 결과를 보면 약 1.6%의 사용자가 자바스크립트를 끄고 웹을 사용한다고 한다. 2%의 사용자 수가 작아보일 수도 있지만 전체 사용자 수의 2%라고 하면 규모가 큰 사이트에서는 절대로 무시할 수 있는 수의 사용자이다.
서버 부하를 줄이기 위해서 자바스크립트로만 유효성 검사를 한다?
자바스크립트를 이용해서 서버의 부하를 줄일 수 있다는 것은 널리 알려진 지식이다. 자바스크립트로 선처리를 행함으로서 네트웍이나 서버의 처리를 감소시킨다는 것인데 이것을 잘못 이해하여 서버에서 검증할 필요 없이 자바스크립트만으로 유효성을 체크하는 것이 좋다고 생각하는 사람들이 있다. 사용자측으로 부터 넘어온 모든 값은 그 값의 유효성을 완전히 보장할 수 없기 때문에 서버측에서도 유효성 체크를 반드시 해 줘야만 한다. 이것은 서버의 부하를 높이는 것 이전에 자료의 무결성을 보장하는 중요한 과정이다. 자바스크립트를 거치지 않고 서버에 임의로 변조된 값을 보내는 일은 아주 쉬운 일이다.
자바스크립트를 사용하지 않으면 UI가 불편해 진다?
자바스크립트를 이용해서 RIA나 좋은 UI를 만들 수 있는 것은 사실이지만 웹환경을 이해하고 일반적인 웹 인터페이스를 이용해서 만드는 것이 더 좋은 UI를 제공할 수 있다. 사용자 친화적인 UI에 대한 고민을 해야지 자바스크립트를 사용했다고 좋은 UI가 나오는 것은 아니다. 실제적으로 가장 사용자가 이해하기 쉬운 UI는 사용자 OS나 브라우저에서 기본적으로 제공하는 컨트롤 인터페이스를 그대로 사용하는 것이고 이는 자바스크립트 없이도 충분히 가능하다.
자바스크립트는 사용자 환경에 내려보내지고 사용자의 브라우저에서 실행이 되기 때문에 이에 의존해서 프로그램을 만들게 되면 보안, 접근성에 문제가 생기기 쉽다. 이러한 자바스크립트의 특징을 정확히 이해하지 못한 잘못된 개발 방법이나 상식들 때문에 자바스크립트가 오용되고 있는 경우가 많다. 자바스크립트는 어디까지나 보조적인 수단이라는 것을 이해하고 핵심적인 기능을 해치지 않는 한도에서 사용하는 것이 중요하다.

자바스크립트 선언
<script language="Javascript">
//code
</script>
자바스크립트는 스크립트(script) 요소로 선언을 한다. 모든 스크립트 요소에는 타입(type)을 명시해 주어야 하고 자바스크립트의 타입은 "text/javascript" 이다. 많은 경우 language 속성 만을 선언해서 자바스크립트버젼을 명시하는데 반드시 타입을 명시를 해 주어야 한다.
<script type="text/javascript">
//code
</script>

링크 요소(a element)의 href 속성과 자바스크립트의 사용
href 속성은 Hypertext REFerence의 약자이고 hypertext의 위치를 나타내는 URI를 그 값으로 갖는다. 하지만 많은 경우 "javascript:myFunction()"과 같이 잘못된 값을 이용하는 것을 볼 수 있다. 이와 같이URI가 아닌 잘못된 값이 들어가게 될 경우 브라우저에서 제공하는 북마크나 새창, 새탭으로 열기 등의 기능들이  작동하지 않게 된다.  따라서 href의 값은  항상 유효한 URI가 들어가도록 하고 자바스크립트 적용은 onclick과 같은 이벤트 속성을 통해서 해야 한다.
의미 없는 href 값을 사용한 경우
사용자의 클릭이 링크와 관련이 있는 기능을 한다면 우선은 자바스크립트 없이도 페이지를 이동 할 수 있게 href에 적합한 값을 넣어 주어야 한다. 예를 들어서 탭 콘텐츠를 사용할 경우 탭을 누르면 해당 탭과 관련있는 컨텐츠로 이동할 수 있게 페이지내의 링크를 사용하면 된다. href 안의 값으로 페이지 안에서의 해당 컨텐츠 앵커 주소를 넣는 것으로 간단히 구현 된다.
<a href="#notice-list">
    <img src="notice-tab.gif" alt="Notice" />
</a>
그리고 이 마크업을 기본으로 하여 이벤트 속성으로 원하는 기능을 넣어주면 된다.
<a href="#notice-list" onclick="showNoticeTab(); return false;">
    <img src="notice-tab.gif" alt="Notice" />
</a>
클릭을 했을 때 자바스크립트로 탭을 보여준 후 false를 리턴하여 해당 앵커로 이동하지 않도록 처리 한다. 자바스크립트가 작동 할 때에는 정상적인 탭 콘텐츠 형태로 작동 할 것이고 그렇지 않을 경우에는 해당 컨텐츠로 이동을 하여 접근성을 유지할 수 있다.
만약 자바스크립트가 링크와 관련이 없는 경우에는 a 요소를 사용하기 보다는 버튼(button) 요소를 사용해서 해서 스크립트를 적용하면 안된다. 보통 스타일을 조정해서  효과를 주는 것이 이러한 것에 해당하게 되는데 이 경우는 자바스크립트가 작동을 하지 않아도 컨텐츠 이해에 크게 문제가 되지 않는 경우이다.
<button onclick="myAction()">
    <img src="button.gif" alt="보기" />
</button>

버튼 요소는 브라우저에서 버튼 모양으로 표현이 되는데 스타일로 버튼 모양을 없앨 수 있으므로 필요에 따라서 사용하면 된다.
팝업창을 열 때(window.open)
<img src="openWindow.gif" onclick="window.open('popup.html', '', 'widht=300,height=200')">
<a href="#">
    <img src="openWindow.gif" onclick="window.open('popup.html', '', 'widht=300,height=200')">
</a>
href에 #을 넣고 onclick 안의 스크립트에 경로를 처리하는 경우가 있는데 팝업창은 페이지가 별도로 존재 하기 때문에 a 요소를 이용해서 href에 적절한 팝업창의 경로는 넣어서 구현하여야 한다.
<a href="popup.html" onclick="window.open(this.href, 'popupName', 'width=300,height=200'); return false;">
    <img src="openWindow.gif">
</a>
이럴 경우 사용자가 자신의 의도 대로 팝업창을 새창, 새탭 등으로 열 수 있고 심지어 즐겨 찾기도 할 수 있다.

자바스크립트를 이용한 페이지 이동
웹사이트를 이용하다 보면 서식에서 값을 입력하고 전송을 하는 순간 "따다다닥" 하는 식으로 클릭을 여러번 한 것과 같은 소리가 나는 경우를 접하게 된다. 서식 입력을 처리하는 과정이 여러페이지에 걸쳐서 일어나게 되는데 이 처리를 자바스크립트로 하게 되면 이런 현상이 발생한다.
<script type="text/javascript">
document.location.href="redirection.html";
</script>
위와 같이 페이지를 이동 하거나 아래와 같이 서식 요소를 이용해서 값을 넘기는 경우가 이러한 경우이다.
<form name="login_form">
    <input type="hidden" name="user_id" value="myid" />
    <input type="hidden" name="user_pwd" value="mypassword" />
    <input type="hidden" name="redirect_url" value="/login/" />
    <input type="hidden" name="somevalue" value="blahblah" />
    ...
</form>
<script type="text/javascript">
f = document.forms.login_form;
f.action = "http://login.oursite.com/login/";
...
f.submit();
</script>
심한 경우 아래와 같이 전혀 의미 없는 서식을 이용하기도 한다.
<form method="post" name="sg_form" action="http://www.qubi.com/" target="_top">
</form>
<script> sg_form.submit(); //3</script>
위와 같은 페이지들은 적절하게 구성되지 않은 HTML 페이지이기 때문에 특정 환경에서 작동을 안 할 수도 있다. 서식 요소나 스크립트 요소는 상위에 바디(body)나 헤드(head) 요소가 있어야 하는데 위와 같은 경우 이러한 요소가 없기 때문에 HTML로 해석이 안되어 스크립트가 작동 되지 않거나 값이 넘어가지 않을 수도 있다. 그리고 서식 요소 하위에 전송 기능을 하는 인풋 요소가 없기 때문에 자바스크립트로 전송이 일어나지 않을 수도 있다.
이와 같이 페이지를 이동하거나 값을 넘길 필요가 있을 때 자바스크립트에 의존해서 이를 처리하게 되면 클라이언트의 환경에 따라서 동작이 실패할 수 있다. 따라서 이러한 처리는 자바스크립트에서 처리 하지 말고 서버 측에서 처리를 하는 것이 더욱 안정적이다.
이러한 중간과정에서의 처리를 서버측에서 모두 처리 하는 것이 가장 바람직 하지만 어쩔 수 없이 사용을 해야할 경우에는 - 그럴 경우가 많지는 않겠지만 기존의 호환성을 위해서 - DOCTYPE 선언이나 html 요소, head, body와 같은 필수 엘리먼트들이 존재하는 완성된 페이지를 사용 하도록 하고, 자바스크립트가 작동하지 않는 경우를 위해서 서식 요소에 전송 버튼도 제공을 하고, 결과 메세지도 alert외에 일반 텍스트와 다음 페이지 이동 링크를 제공하도록 해야 한다.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr" />
<title>Redirect</title>
</head>
<body>
<script type="text/javascript">
/*
 some processes...
*/
alert('이래저래한 이유로 다시 돌아 갑니다.');
document.location.href="redirection.html";
</script>
<p><a href="redirection.html">이래저래한 이유로 다시 돌아 갑니다.</a></p>
</body>
</html>
캐릭터 셋 선언이 없는 경우 브라우저의 기본 설정으로 alert이 작동하기 때문에 브라우저의 기본 설정이 ko-kr이 아닌 경우 한글이 깨지게 된다. 문서의 마임타입(mime-type)도 text/html인지 확인해야 한다.

서식 요소에서의 자바스크립트 사용
일반적으로 서식은 사용자가 입력한 값을 서버측에 전달하는 역할을 하고 그 전달은 서식 요소의 전송 기능을 통해서 이루어 진다. 이러한 서식을 구현 할 때에 자바스크립트를 사용하는 경우가 많다.
전송(submit)
서식은 값을 보내는 전송 기능을 제공하고 있다. <input type="submit" />이나 <input type="image" />, <button type="submit></button>이 전송 기능을 하는 컨트롤인데 서식의 값 유효성 체크를 하는 과정에서 이러한 서식의 자체적인 전송 기능을 이용하지 않고 자바스크립트로 서식 전송을 하는 경우가 있다.
<script type="text/javascript">
function submitForm() {
    loginForm.submit();
}
</script>
<form id="loginForm" name="loginForm" action="">
    User Id <input type="text" name="loginId">
    User Password <input type="password" name="loginPassword"><br>
    <img src="login.gif" onclick="submitForm()">
</form>
위와 같은 경우 서식에 전송 기능이 없기 때문에 브라우저에 따라서 script로 전송이 안되는 경우도 있고 전송 버튼 대신에 이미지가 들어있기 때문에 의미적으로도 맞지 않다. 따라서 서식을 제작할 때에는 반드시 전송 기능을 적절한 HTML 요소를 이용해서 제공해야 한다.
<form id="loginForm" name="loginForm" action="">
    <p>
        <label for="loginId">User Id</label>
        <input type="text" id="loginId" name="loginId" /><br />
        <label for="loginPassword">User Password</label>
        <input type="password" id="loginPassword" name="loginPassword" />
    </p>
    <p>
        <input type="image" src="login.gif" alt="Login" />
    </p>
</form>

유효성 검사(validation)
클라이언트 측에서 자바스크립트를 이용한 유효성 검증은 자바스크립트가 서식을 전송(form.submit())하는 방식 대신에 서식의 전송 이벤트(onsubmit)를 캐치하는 방식으로 구현한다.
<script type="text/javascript">
function submitForm() {
    if (!loginForm.loginId.value) {
        alert("아이디를 넣어주세요.");
        loginForm.loginId.focus();
    } else if (!loginForm.loginPassword.value) {
        alert("비밀번호를 넣어주세요.");
        loginForm.loginPassword.focus();
    } else {
        loginForm.submit();
    }
}
</script>
<form id="loginForm" name="loginForm" action="">
    아이디 <input type="text" name="loginId">
    비밀번호 <input type="password" name="loginPassword"><br>
    <img src="login.gif" onclick="submitForm()">
</form>
위와 같은 경우 자바스크립트만을 이용해서 서식을 전송하고 있기 때문에 HTML만으로는 기능이 작동하지 않는다.
<script type="text/javascript">
function submitForm(formEl) {
    //TrimAll(formEl);

    var errorMessage = null;
    var objFocus = null;

    if (formEl.loginId.value.length == 0) {
        errorMessage = "아이디를 넣어주세요.";
        objFocus = formEl.loginId;
    } else if (formEl.loginPassword.value.length == 0) {
        errorMessage = "비밀번호를 넣어주세요.";
        objFocus = formEl.loginPassword;
    }

    if(errorMessage != null) {
        alert(errorMessage);
        objFocus.focus();
        return false;
    }
    return true;
}
</script>

<form id="loginForm" name="loginForm" action="" onsubmit="return submitForm(this)">
    <label for="loginId">아이디</label> <input type="text" id="loginId" name="loginId" />
    <label for="loginPassword">비밀번호</label> <input type="password" id="loginPassword" name="loginPassword" /><br />
    <input type="image" src="login.gif" alt="Login" />
</form>
이와 같이 onsubmit 이벤트를 이용해서 서식의 유효성을 검사하고 그 결과를 true나 false로 보내줌으로써 서식이 전송을 진행하거나 멈출 수 있고, onsubmit 이벤트가 발생하지 않아도 사용자는 서식을 사용할 수 있기 때문에 접근성이 높아지게 된다.

게시판 등에서 페이지 이동을 자바스크립트로 하는 경우
게시판에서 페이지의 이동을 자바스크립트 서식 전송으로 하는 것을 많이 볼 수 있다. 아래와 같이 사용자 인풋이 없는 빈 서식을 하나 만들고 이것과 자바스크립트를 이용해서 페이지를 이동하는 것이다.
<form method="post" name="vars">
    <input type="hidden" name="articleId" value="23" />
    <input type="hidden" name="page" value="3" />
    <input type="hidden" name="keysord" value="" />
    <input type="hidden" name="searchType" value="" />
    <!-- 등등 -->
</form>

...

<a href="javascript:ArticleRead()">글읽기</a>
<a href="javascript:GoList()">리스트 보기</a>
URL이 간단해 지고 다루기 쉽다는 이유로 이러한 방식으로 개발을 하는 경우가 많은 것 같다. 위와 같이 모든 기능을 자바스크립트를 이용해서 구현을 하게 되면 자바스크립트 오류가 있거나 자바스크립트가 작동 하지 않는 상황에서는 접근을 할 수 없게 된다. 또한 모든 변수를 POST를 통해서 전달하기 때문에 글의 주소를 나타내는 URL이 표시되지 않고 해당 페이지를 따로 북마크 한다든지 링크를 저장을 할 수 없게된다. 게시판의 경우 해당 게시물로의 접근을 쉽게 해 주어야 하는데 사용자가 URL을 알 수 없게 함으로써 접근을 원천적으로 막게 된다.
자바스크립트를 이용하지 않고도 a 요소와 URL만으로도 작동 가능한 페이지를 만들고 쿼리스트링을 효율적으로 다루는 방법을 모색하여 개발을 진행하는 것이 좋다.

마치며
웹사이트 개발을 하면서 접할 수 있었던 자바스크립트 과용 예를 적어 보았다. 그런데 놀라운 것은 이러한 개발 방식을 초보부터 어느정도 경력이 된 개발자들까지 아무런 고민 없이 사용하고 있었다는 것이다. 책이 잘못된 것인지 교육이 잘못 된 것인지 정확한 원인을 알 수는 없지만 많은 개발자들이 웹이 가지고 있는 기본적인 특성을 무시한채 이러한 방법으로 개발을 하고 있는 것이 사실이다. 그리고 초보 개발자들은 HTML을 잘 모르기 때문에 이러한 개발 방식을 아무 고민 없이 그냥 받아들이고 있는 실정이다.
접근성 뿐만 아니라 사용성도 크게 낮추고 있는 것이 바로 이 잘못된 자바스크립트의 사용이다. 부디 개발자들이 올바른 HTML에 기초한 접근성 높은 웹사이트, 웹 어플리케이션을 구축 하기를 바라는 바이다.
참고

    웹 접근성을 위한 자바스크립트 적용 방법 (Graceful Degradation vs. Progressive Enhancement)
    겸손한 Javascript 및 Ajax 코드 작성 안내서

'자바스크립트' 카테고리의 다른 글

자바스크립트 MVC 패턴 구현 하기.  (0) 2012.08.20
순수 HTML typing 게임  (0) 2012.08.16
물고기 소스  (0) 2012.06.15
document.createElement  (1) 2012.06.14
event.keyCode 사용 하기.  (0) 2012.06.13
Posted by 사라링

물고기 소스

2012. 6. 15. 09:37


물고기가 돌아 다니며. 마우스 클릭시 먹이가 생겨 물고기가 모여 든다


<object type="application/x-shockwave-flash" style="outline:none;" data="http://hosting.gmodules.com/ig/gadgets/file/112581010116074801021/fish.swf?" width="300" height="200"><param name="movie" value="http://hosting.gmodules.com/ig/gadgets/file/112581010116074801021/fish.swf?"></param><param name="AllowScriptAccess" value="always"></param><param name="wmode" value="opaque"></param><param name="scale" value="noscale"/><param name="salign" value="tl"/></object>
     

를 소스 에 추가 하면 끝 /

Posted by 사라링


document.createElement

« Gecko DOM Reference

요약

지정된 태그이름을 가지는 엘리먼트를 생성합니다.

문법

엘리먼트 = document.createElement(태그이름);
  • 엘리먼트 생성된 엘리먼트 객체입니다.
  • 태그이름 생성할 엘리먼트의 종류를 지정하는 문자열입니다. 생성된 엘리먼트의 nodeName 속성은 태그이름에 지정된 값으로 초기화됩니다.

예제

이 예제는 새로운 <div> 엘리먼트를 생성한 후, id가 "org_div1" 인 엘리먼트 앞에 추가합니다:

<html>
<head>
<title>||엘리먼트 사용하기||</title>
</head>

<script type="text/javascript">
var my_div = null;
var newDiv = null;

function addElement()
{
  // 새로운 div 엘리먼트를 만들고
  // 내용을 작성합니다.
  newDiv = document.createElement("div");
  newDiv.innerHTML = "<h1>안녕! 반가워!</h1>";

  // 생성된 엘리먼트를 추가합니다.
  my_div = document.getElementById("org_div1");
  document.body.insertBefore(newDiv, my_div);
}

</script>

<body onload="addElement()">
<div id='org_div1'> 위의 문장은 동적으로 만들어 진 것입니다.</div>
</body>
</html>

참고 사항

기본값이 있는 잘 알려진 특성(attributes)들은 자동으로 생성되어 엘러먼트에 특성노드로 추가됩니다.

qualified 이름과 네임스페이스 URI를 갖는 엘리먼트를 만들 경우에는 createElementNS 메서드를 사용합니다.

Gecko 엔진의 createElement 구현은 XUL과 XHTML 문서에 대한 DOM 규약을 따르지 않습니다: localNamenamespaceURInull로 설정되지 않습니다. 자세한 사항은 bug 280692 를 참고하세요.




== 추가

Use jQuery objects to build up your table instead of using string concatenation.  How many time have you seen code similar to the following to build up a table?

        $(function () {

            var content = '';
            content += '<div id="tableWrap">';
            content += '<table id="basicTable">';

            for (var i = 0; i < 200; i++) {


                content += '<tr>';
                content += '<td>';
                content += i;
                content += '</td>';
                content += '<td>';
                content += 200 - i;
                content += '</td>';
                content += '</tr>';
            }

            content += '</table>';
            content += '</div>';

            $('body').append(content);
        });

Let's use jQuery's built in ability to build up the objects and take a look at how we could write this differently below.

        $(function () {

            var $wrap = $('<div>').attr('id', 'tableWrap');

            var $tbl = $('<table>').attr('id', 'basicTable');

            for (var i = 0; i < 200; i++) {

                $tbl.append(
                            $('<tr>')
                                    .append($('<td>').text(i),
                                            $('<td>').text(200 - i))
                           );
            }

            $wrap.append($tbl);
            $('body').append($wrap);
        });

View the live code here!


'자바스크립트' 카테고리의 다른 글

순수 HTML typing 게임  (0) 2012.08.16
자바 스크립트를 이용 할때 꼭 한번 읽어야 할것  (0) 2012.06.20
물고기 소스  (0) 2012.06.15
event.keyCode 사용 하기.  (0) 2012.06.13
window.open(URL,name,specs,replace)  (0) 2012.06.05
Posted by 사라링

=============================================================
키 | 코드(숫자)
=============================================================

←(백스패이스) = 8
TAB = 9
ENTER = 13
SHIFT = 16
CTRL = 17
ALT = 18
PAUSEBREAK = 19
CAPSLOOK = 20
한/영 = 21
한자 = 25
ESC = 27

스패이스 = 32
PAGEUP = 33
PAGEDN = 34
END = 35
HOME =36

←(중간) = 37
↑(중간) = 38
→(중간) = 39
↓(중간) = 40

0 = 48
1 = 49
2 = 50
3 = 51
4 = 52
5 = 53
6 = 54
7 = 55
8 = 56
9 = 57
INSERT = 45
DELETE = 46

A = 65
B = 66
C = 67
D = 68
E = 69
F = 70
G = 71
H = 72
I = 73
J = 74
K = 75
L = 76
M = 77
N = 78
O = 79
P = 80
Q = 81
R = 82
S = 83
T = 84
U = 85
V = 86
W = 87
X = 88
Y = 89
Z = 90

윈도우(왼쪽) = 91
윈도우(오른쪽) = 92
기능키 = 93
0(오른쪽) = 96
1(오른쪽) = 97
2(오른쪽) = 98
3(오른쪽) = 99
4(오른쪽) = 100
5(오른쪽) = 101
6(오른쪽) = 102
7(오른쪽) = 103
8(오른쪽) = 104
9(오른쪽) = 105
.(오른쪽) = 110
/(오른쪽) = 111
*(오른쪽) = 106
+(오른쪽) = 107
-(오른쪽) = 109
F1 = 112
F2 = 113
F3 = 114
F4 = 115
F5 = 116
F6 = 117
F7 = 118
F8 = 119
F9 = 120
F10 = 121
F11 = 122
F12 = 123
NUMLOCK = 144
SCROLLLOCK = 145
=(중간) = 187
-(중간) = 189
`(왼쪽콤마) = 192
(중간) = 220







































사용 하기.

 <input name="adminPW" type="password" value="java" onKeyUp=autoSubmit() tabindex="2" style="width:140px;">


<script language=javascript>
    function send()    {
        if(frm.adminid.value ==""){
            alert("관리자 ID를 입력하세요");
            frm.adminid.focus();
            return false;
        }
        else if(frm.adminpass.value==""){
            alert("관리자 PASS를 입력하세요");
            frm.adminpass.focus();
            return false;
        }
        frm.submit();
}
function autoSubmit(){
    if (event.keyCode == 13)
        send();
}
</script>






이런식으로 13 은 ENTER 키를 누를 시에 send() 를 사용 하라고 지시 하는것.


추가로 ctrl +enter 는

$('#textareaId').keydown(function (e) {

 
if (e.ctrlKey && e.keyCode == 13) {
   
// Ctrl-Enter pressed
 
}
});

방식으로 사용 하면된다.


'자바스크립트' 카테고리의 다른 글

순수 HTML typing 게임  (0) 2012.08.16
자바 스크립트를 이용 할때 꼭 한번 읽어야 할것  (0) 2012.06.20
물고기 소스  (0) 2012.06.15
document.createElement  (1) 2012.06.14
window.open(URL,name,specs,replace)  (0) 2012.06.05
Posted by 사라링

Window open() Method


Definition and Usage

The open() method opens a new browser window.

Syntax

window.open(URL,name,specs,replace)

Parameter Description
URL Optional. Specifies the URL of the page to open. If no URL is specified, a new window with about:blank is opened
name Optional. Specifies the target attribute or the name of the window. The following values are supported:
  • _blank - URL is loaded into a new window. This is default
  • _parent - URL is loaded into the parent frame
  • _self - URL replaces the current page
  • _top - URL replaces any framesets that may be loaded
  • name - The name of the window
specs Optional. A comma-separated list of items. The following values are supported:

channelmode=yes|no|1|0 Whether or not to display the window in theater mode. Default is no. IE only
directories=yes|no|1|0 Whether or not to add directory buttons. Default is yes. IE only
fullscreen=yes|no|1|0 Whether or not to display the browser in full-screen mode. Default is no. A window in full-screen mode must also be in theater mode. IE only
height=pixels The height of the window. Min. value is 100
left=pixels The left position of the window
location=yes|no|1|0 Whether or not to display the address field. Default is yes
menubar=yes|no|1|0 Whether or not to display the menu bar. Default is yes
resizable=yes|no|1|0 Whether or not the window is resizable. Default is yes
scrollbars=yes|no|1|0 Whether or not to display scroll bars. Default is yes
status=yes|no|1|0 Whether or not to add a status bar. Default is yes
titlebar=yes|no|1|0 Whether or not to display the title bar. Ignored unless the calling application is an HTML Application or a trusted dialog box. Default is yes
toolbar=yes|no|1|0 Whether or not to display the browser toolbar. Default is yes
top=pixels The top position of the window. IE only
width=pixels The width of the window. Min. value is 100

replace Optional.Specifies whether the URL creates a new entry or replaces the current entry in the history list. The following values are supported:
  • true - URL replaces the current document in the history list
  • false - URL creates a new entry in the history list


Browser Support

Internet Explorer Firefox Opera Google Chrome Safari

The open() method is supported in all major browsers.


Examples

Example 1

The following example opens www.w3schools.com in a new browser window:

<html>
<head>
<script type="text/javascript">
function open_win()
{
window.open("http://www.w3schools.com")
}
</script>
</head>
<body>

<input type="button" value="Open Window" onclick="open_win()" />

</body>
</html>

Try it yourself »

Example 2

The following example opens an about:blank page in a new browser window:

<html>
<body>

<script type="text/javascript">
myWindow=window.open('','','width=200,height=100')
myWindow.document.write("<p>This is 'myWindow'</p>")
myWindow.focus()
</script>

</body>
</html>

Try it yourself »


'자바스크립트' 카테고리의 다른 글

순수 HTML typing 게임  (0) 2012.08.16
자바 스크립트를 이용 할때 꼭 한번 읽어야 할것  (0) 2012.06.20
물고기 소스  (0) 2012.06.15
document.createElement  (1) 2012.06.14
event.keyCode 사용 하기.  (0) 2012.06.13
Posted by 사라링

BLOG main image
.. by 사라링

카테고리

사라링님의 노트 (301)
JSP (31)
J-Query (41)
JAVA (24)
VM-WARE (0)
디자인패턴 (1)
스크랩 (0)
스트러츠 (3)
안드로이드 (11)
오라클 (45)
우분투-오라클 (1)
이클립스메뉴얼 (6)
스프링3.0 (23)
자바스크립트 (10)
HTML5.0 (17)
정보처리기사 (1)
기타(컴퓨터 관련) (1)
문제점 해결 (3)
프로젝트 (2)
AJAX (4)
하이버네이트 (3)
트러스트폼 (11)
Jeus (2)
재무관리(회계) (5)
정규식 (5)
아이바티스 (8)
취미 (2)
소프트웨어 보안 관련모음 (0)
정보보안기사 (6)
C언어 베이직 및 프로그램 (3)
보안 관련 용어 정리 (2)
넥사크로 (6)
Total :
Today : Yesterday :