최상위객체는 window 하나뿐이고, 그 아래에 파생되는 객체들이 존재한다.
하지만 최상위객체 지칭인 "window."를 생략하고 사용하므로 얼핏보기에는
총 6개의 최상위객체가 있는 것으로 생각될수도 있다.

Browser Objects Reference

The references describe the properties and methods of each object, along with examples.


[링크 : http://www.w3schools.com/jsref/default.asp]

Window Object Properties

Property Description
document Returns the Document object for the window (See Document object)
history Returns the History object for the window (See History object)
location Returns the Location object for the window (See Location object)
navigator Returns the Navigator object for the window (See Navigator object)
screen Returns the Screen object for the window (See Screen object)

[링크 : http://www.w3schools.com/jsref/obj_window.asp]


Posted by 구차니

댓글을 달아 주세요

document.keydown 이라는 녀석에 등록을 하면
이벤트 핸들러로 등록이 되어 후킹을 하는 것으로 보인다.

function processShortcut(event) {
            if (isIE)
        {
            event = window.event;
            event.target = event.srcElement;
        }
   
        if (event.altKey || event.ctrlKey)
            return;
        switch (event.target.nodeName) {
            case "INPUT":
            case "SELECT":
            case "TEXTAREA":
                return;
        }
        switch (event.keyCode) {
            case 81: //Q

                window.location = "/admin";
                break;
            case 83: //S
                window.location = "?page=2";
                break;
            case 90: //Z
                window.location = "#recentEntries";
                break;
            case 88: //X
                window.location = "#recentComments";
                break;
            case 67: //C
                window.location = "#recentTrackback";
                break;
        }
    }
    document.onkeydown = processShortcut;



2010.07.27 추가
테스트를 해보니 무조건 대문자로 받아들이고, 'Q' 나 'q' 이런식의 값은 인식을 못하는 것으로 보인다.
괜히 위에 case 81: 이런식으로 한게 아니구나 ㅠ.ㅠ
Posted by 구차니

댓글을 달아 주세요

자바스크립트를 공부하면서 가장 헷갈리고 있는 부분이 바로 'var' 키워드이다.
어디서는
 var 변수=값;
라고 선언하고, 어디서는
 변수=값;
이라고만 선언하는데, C언어적인 관점에서는 도무지 있을수 없는 녀석이라 혼돈을 더해주고만 있어서
검색을 해보지만 이렇다 할 레퍼런스를 찾지는 못했다.

간략하게만 정리하자면
1. var 를 붙이지 않으면 자동으로 "전역변수"로 선언되며
   var 를 붙이지 않은 변수는 window 오브젝트(혹은 컨텍스트?)에 선언된다.
2. javascript 는 dynamic scope 이기 때문에 함수에서 변수를 사용시에는
  함수가 어디에 선언되었냐 보다는, 어디에서 함수가 불려지냐는 "문맥(context)"가 중요해 진다고 한다.
3. 그리고 var로 선언한 변수는 delete 키워드로 메모리를 해제할수 없다.

아무튼 ECMA 표준을 보던가 해서 명확하게 좀 찾아볼 필요가 있어 보인다.

더보기


[링크 : https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference:Functions]
Posted by 구차니

댓글을 달아 주세요

  1. 포스트를 보는 도중에도 알쏭달쏭해요;;;

    2010.07.24 04:02 신고 [ ADDR : EDIT/ DEL : REPLY ]

2010/07/23 - [Programming/Javascript] - javascript / XML - XMLHttpRequest

XML이 파일을 기술하는 형태등이라면 DOM은 그러한 데이터를 조작하는 방법을 의미한다.
DOM은 XML 파일에 대해서도 사용이 가능하고
HTML 파일에 대해서도 tree 구조로 navigation이 가능하다.

그러고 보니.. 이녀석을 이용하면 예전에 완전 생 노가다로 했던
웹에서 특정 셀의 자료들만 긁어오기를 자동화 시킬수 있을 것으로 보인다.
(satcodx.com 에서 주파수/심볼/polarization 을 자동으로 긁어오기 라던가?)

[링크 : http://www.w3.org/TR/#tr_DOM]
    [링크 : http://www.w3.org/TR/DOM-Level-2-Core/core.html]
[링크 : https://developer.mozilla.org/Special:Tags?tag=DOM&language=en]
    [링크 : https://developer.mozilla.org/en/document.getElementsByName]
    [링크 : https://developer.mozilla.org/en/document.getElementById]

Posted by 구차니

댓글을 달아 주세요

XMLHttpRequest() 는 XML 파서를 생성하는 자바스크립트 함수이다.
동기/비동기로 작동을 시킬수 있으며 동기로 작동하면 순간적으로 UI가 멈추니 쓰지 말란다~

기본 사용

XMLHttpRequest의 사용법은 아주 간단합니다. 이 개체의 인스턴스를 만들고, URL을 열고, 요청을 보내면 됩니다. 그 후에는 인스턴스의 결과 문서와 HTTP 상태 코드를 사용할 수 있게됩니다.

var req = new XMLHttpRequest();
req.open('GET', 'http://www.mozilla.org/', false);
req.send(null);
if(req.status == 200)
dump(req.responseText);
참고: 이 예제는 동기적으로 동작하므로 이 함수를 JavaScript에서 호출하면 UI가 멈춥니다. 실제 제품 코드에서는 이 코드를 사용하지 마십시오.

[링크 : https://developer.mozilla.org/ko/XMLHttpRequest]

누가 머래도 원본(?)이 장땡
[NoInterfaceObject]
interface XMLHttpRequestEventTarget : EventTarget {
// for future use
};

[Constructor]
interface XMLHttpRequest : XMLHttpRequestEventTarget {
// event handler attributes
attribute Function onreadystatechange;

// states
const unsigned short UNSENT = 0;
const unsigned short OPENED = 1;
const unsigned short HEADERS_RECEIVED = 2;
const unsigned short LOADING = 3;
const unsigned short DONE = 4;
readonly attribute unsigned short readyState;

// request
void open(DOMString method, DOMString url);
void open(DOMString method, DOMString url, boolean async);
void open(DOMString method, DOMString url, boolean async, DOMString? user);
void open(DOMString method, DOMString url, boolean async, DOMString? user, DOMString? password);
void setRequestHeader(DOMString header, DOMString value);
void send();
void send(Document data);
void send([AllowAny] DOMString? data);
void abort();

// response
readonly attribute unsigned short status;
readonly attribute DOMString statusText;
DOMString getResponseHeader(DOMString header);
DOMString getAllResponseHeaders();
readonly attribute DOMString responseText;
readonly attribute Document responseXML;
};

[링크 : http://www.w3.org/TR/XMLHttpRequest/]

'Programming > javascript & HTML' 카테고리의 다른 글

javascript - scope (var keyword)  (2) 2010.07.23
javascript / DOM - document.getelementbyid  (0) 2010.07.23
javascript / XML - XMLHttpRequest  (2) 2010.07.23
javascript - alert() confirm() prompt()  (6) 2010.07.20
javascript 객체출력  (8) 2010.07.20
javascript - for / for .. in  (0) 2010.07.18
Posted by 구차니

댓글을 달아 주세요

  1. 홋 Ajax의 시발점을 맛보고 계시군요~. 정말 열공이세요~

    2010.07.25 19:24 신고 [ ADDR : EDIT/ DEL : REPLY ]

alert() 은 다음과 같이 "확인" 버튼만 존재한다.
그리고 리턴값은 undefined 이다. (값을 리턴하지 않음)

<html>
<script type="text/javascript">
ret = alert("al!");
document.write(ret, "<BR>");
</script>
</html>


confirm() 은 다음과 같이 "확인", "취소" 버튼이 존재한다.
그리고 리턴값은 true/false 이다.

<html>
<script type="text/javascript">
ret = confirm("co!");
document.write(ret, "<BR>");
</script>
</html>



prompt()는 다음과 같이 "확인", "취소" 버튼 그리고 editbox가 존재한다.
그리고 리턴값은 null(취소) 혹은 값이다(내용입력 없이 확인을 누르면 ""이 리턴된다)

<html>
<script type="text/javascript">
ret = prompt("pr!");
document.write(ret, "<BR>");
</script>
</html>


'Programming > javascript & HTML' 카테고리의 다른 글

javascript / DOM - document.getelementbyid  (0) 2010.07.23
javascript / XML - XMLHttpRequest  (2) 2010.07.23
javascript - alert() confirm() prompt()  (6) 2010.07.20
javascript 객체출력  (8) 2010.07.20
javascript - for / for .. in  (0) 2010.07.18
javascript - 변수 타입  (0) 2010.07.18
Posted by 구차니

댓글을 달아 주세요

  1. 오호.. 뭔가요?
    자바스크립트 모르신다더니.. 어찌 .. ㅎㅎㅎ
    올만에 아는것이 나와서 기분좋습니다. ㅋㅋ

    2010.07.20 09:52 신고 [ ADDR : EDIT/ DEL : REPLY ]
  2. 진짜.. 구차니님 적어 놓으신거 보면 하나도 모르겠던데.. 이건 아는거네요.. ^^

    2010.07.20 16:41 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 므하하 전 몰랐던 거에요 ㅋㅋㅋ
      고로 담덕님이 밥 쏘세요 ㅋㅋ (응?)

      2010.07.20 16:43 신고 [ ADDR : EDIT/ DEL ]
  3. 헐...진짜 그냥 c++ 이나 별 다를바 없네요....
    학교에서 딱 한번 해 보고 전 발 뺐었는데..ㅋㅋㅋ

    2010.07.23 09:12 [ ADDR : EDIT/ DEL : REPLY ]
    • 심심해서 javascipt를 c로 포팅하기 혹은 c를 javascript로 하기 이런거 만들어 볼까 고심중 ㅋㅋ

      2010.07.23 09:49 신고 [ ADDR : EDIT/ DEL ]

javascript 에서 window 객체가 최상위 객체라고 하길래
어떤 객체들이 있나, 어떤 함수들이 있나 for...in 을 이용해서 출력했다.
하지만 출력하다 죽는 문제가 있어 해결방법을 찾던중
try..catch 문이란게 있었고 e.message 로 메시지를 출력하면 계속 진행하는 것을 발견했다.

음.. 문법은 거의 C++에 가까운 느낌이라고 해야하나..

<html>
<script type="text/javascript">
document.write("<hr><H1>window</H1>");
for (i in window)
{
  try
  {
    if(typeof(window[i]) == 'object')
          document.write("<B>",i,"</B><br>");
    else  document.write(window[i], "<br>");
  }
  catch(e)
  {
    document.write(i,"-");
    document.write("<font color=red>",e.message, "</font><br>");
  }
}

document.write("<hr><H1>document</H1>");
for (i in document)
{
  try
  {
    if(typeof(document[i]) == 'object')
          document.write("<B>",i,"</B><br>");
    else  document.write(document[i], "<br>");
  }
  catch(e)
  {
    document.write(i,"-");
    document.write("<font color=red>",e.message, "</font><br>");
  }
}

document.write("<hr><H1>location</H1>");
for (i in location)
{
  try
  {
    if(typeof(location[i]) == 'object')
          document.write("<B>",i,"</B><br>");
    else  document.write(location[i], "<br>");
  }
  catch(e)
  {
    document.write(i,"-");
    document.write("<font color=red>",e.message, "</font><br>");
  }
}

document.write("<hr><H1>history</H1>");
for (i in history)
{
  try
  {
    if(typeof(history[i]) == 'object')
          document.write("<B>",i,"</B><br>");
    else  document.write(history[i], "<br>");
  }
  catch(e)
  {
    document.write(i,"-");
    document.write("<font color=red>",e.message, "</font><br>");
  }
}

document.write("<hr><H1>navigator</H1>");
for (i in navigator)
{
  try
  {
    if(typeof(navigator[i]) == 'object')
          document.write("<B>",i,"</B><br>");
    else  document.write(navigator[i], "<br>");
  }
  catch(e)
  {
    document.write(i,"-");
    document.write("<font color=red>",e.message, "</font><br>");
  }
}
</script>
</html>

더보기


'Programming > javascript & HTML' 카테고리의 다른 글

javascript / XML - XMLHttpRequest  (2) 2010.07.23
javascript - alert() confirm() prompt()  (6) 2010.07.20
javascript 객체출력  (8) 2010.07.20
javascript - for / for .. in  (0) 2010.07.18
javascript - 변수 타입  (0) 2010.07.18
javascript template  (0) 2010.07.18
Posted by 구차니

댓글을 달아 주세요

  1. 아~~~아~~~악!!!
    보기 싫은데요.. --;;;;

    2010.07.20 16:41 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 아름답지 않습니까!? ㅋㅋㅋ
      C언어로만 하다가 javascript라는 언어를 만지니 느낌이 좋네요 ㅎ 너무 C에만 얽매여 있었던게 아닐까 하는 후회도 들구요 ㅎ

      2010.07.20 16:42 신고 [ ADDR : EDIT/ DEL ]
  2. 흠.. 구차니님을 javascipt로 객체지향 프로그래밍을 할 수 있는 묘미에 한번 빠뜨려보고싶군요.
    시간이 되면 한번 전수받아 보실래요?
    javascript가 워낙 동적언어인지라 Object를 컨트롤하고 생성하고 체인할 수 있는 다양한 기법들이 존재해요.
    API를 넘어서 구조론쪽으로 공부하다보면 어느새 javascript로 프레임웍도 만들 수 있는 시간이 올껍니다.

    2010.07.23 04:26 신고 [ ADDR : EDIT/ DEL : REPLY ]
  3. 오오.. 역시 관련 업계 모두가 군침을 흘린다는 대리급 인력....ㅋ
    며칠만에 이런 단계까지..ㄷㄷㄷ

    2010.07.23 09:13 [ ADDR : EDIT/ DEL : REPLY ]
  4. 스크립트윈

    저도 3년전에 위와 같은 코드로 작성해서 봤었는데..
    그냥 객체를 들여다 보려고 하니까 안되더군요..

    그래서 프레임을 생성해서 거기에 document.write로 찍어주니 대부분 에러 없이 다 나오더군요.

    그런데,
    dom api 객체들을 몇단계 더 들여다보려고 하다보니 에러가 발생해서 try catch로 묶었다는..
    뭐.. 못보는 건 못보나 봅니다.

    암튼 지나가다 저랑 같은 분이 있으셔서...ㅎ

    2010.11.02 15:45 [ ADDR : EDIT/ DEL : REPLY ]
    • 해보신분들은 계시는거 같은데 소스는 왜 눈에 안띨까요 ㅠ.ㅠ
      아무튼, IE랑 FF 도 DOM 객체가 다른게 눈에는 띄는데 브라우저 별로 출력하는 객체도 다르다 보니 좀 아쉽더라구요 ^^

      2010.11.02 16:33 신고 [ ADDR : EDIT/ DEL ]

자바는 특이하게도
c언어 타입(컴파일러 언어 계열)의 for 문과
python 타입(인터프리터 언어 계열)의 for문을 지원한다.

c언어 타입의 for문
for ([initial-expression]; [condition]; [final-expression])
   statement

[링크 : https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Statements/for]

python 타입의 for..in 문
for (variable in object)
  statement

[링크 : https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Statements/for...in]


아래의 소스는 아직 문제가 있어 전체의 객체에 대해 출력을 하지 못한다. (참고용으로만 사용)
소스 결과
<html>
<script type="text/javascript">
document.write("<hr><H1>window</H1>");
for (i in window)
{
  if(typeof(window[i]) == 'object')
        document.write("<B>",i,"</B><br>");
  else  document.write(window[i], "<br>");
}
</script>
</html>

window

function getInterface() { [native code] }
window
document
navigator
netscape
function XPCSafeJSObjectWrapper() { [native code] }
function XPCNativeWrapper() { [native code] }
Components


'Programming > javascript & HTML' 카테고리의 다른 글

javascript - alert() confirm() prompt()  (6) 2010.07.20
javascript 객체출력  (8) 2010.07.20
javascript - for / for .. in  (0) 2010.07.18
javascript - 변수 타입  (0) 2010.07.18
javascript template  (0) 2010.07.18
core javascript 문서  (2) 2010.07.18
Posted by 구차니

댓글을 달아 주세요

자바스크립트는 동적변수 타입을 지원한다.

일단은 var var_name; 식으로 선언을 할 수 있지만
선언하지 않고 값을 바로 할당해도 동적으로 타입을 결정하기 때문에 변수 타입은 신경쓰지 않아도 된다.

그래도 변수타입중에 신경을 써야 할 것이
undefined 라는 넘이다. 변수를 만들긴 했지만, 내용을 넣지 않았다면 "undefined"로 출력이 된다.

소스 결과
<html>
<script type="text/javascript">
    var ts;
    document.write(ts);
</script>
</html>
 undefined

굳이 var 라는 키워드를 이용해서 변수를 선언하지 않더라도 사용은 가능하지만
일단 변수를 선언하거나 대입하지도 않고 변수를 출력하려고 하면 에러가 발생한다.

소스 결과
<html>
<script type="text/javascript">
    var ts;
    document.write(ts);
    document.write(tt);
</script>
</html>
 undefined

 오류: tt is not defined
 소스 파일: file:///C:/window.html
 행: 5

undefined 는 일반적인 변수에 대한 값이 없음을 나타내고
true / false 는 수치형으로도 사용이 되지만 원칙적으로는 참/거짓에 대한 논리값을 적용한다.
그리고 null은 대소문자를 구분해야 한다.(null 은 object에 대한 값이다)

The typeof operator is used in either of the following ways:

  1. typeof operand
  2. typeof (operand)

Type Result
Undefined "undefined"
Null "object"
Boolean "boolean"
Number "number"
String "string"
Host object (provided by the JS environment) Implementation-dependent
Function object (implements [[Call]] in ECMA-262 terms) "function"
E4X XML object "xml"
E4X XMLList object "xml"
Any other object "object"

typeof true == 'boolean'
typeof null == 'object'

[링크:https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Special_Operators/typeof_Operator]

Logical (Boolean) values, either true or false

null, a special keyword denoting a null value; null is also a primitive value.
Because JavaScript is case-sensitive, null is not the same as Null, NULL, or
any other variant l undefined, a top-level property whose value is undefined; undefined is also a primitive value

Basic Data types


[링크 : https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference]

'Programming > javascript & HTML' 카테고리의 다른 글

javascript 객체출력  (8) 2010.07.20
javascript - for / for .. in  (0) 2010.07.18
javascript - 변수 타입  (0) 2010.07.18
javascript template  (0) 2010.07.18
core javascript 문서  (2) 2010.07.18
javascript 관련 링크  (2) 2010.07.18
Posted by 구차니

댓글을 달아 주세요

html 웹 페이지 상에서 자바 스크립트를 사용할때의 템플릿

<html>
<script type="text/javascript">
function function_name(var1, var2)
{
    // statements
}

</script>
</html>


'Programming > javascript & HTML' 카테고리의 다른 글

javascript - for / for .. in  (0) 2010.07.18
javascript - 변수 타입  (0) 2010.07.18
javascript template  (0) 2010.07.18
core javascript 문서  (2) 2010.07.18
javascript 관련 링크  (2) 2010.07.18
JSON - JavaScript Object Notation  (2) 2010.06.07
Posted by 구차니

댓글을 달아 주세요