window.open 이란?

 

window.open 메소드는 새 창을 생성한다.

현대의 브라우저는 대부분 탭을 지원하기 때문에 window.open은 새 창을 만든다.

 

 

 

 

 

window.open 메소드 

<li>
    첫번째 인자는 새 창에 로드할 문서의 URL이다. 인자를 생략하면 이름이 붙지 않은 새 창이 만들어진다.<br />
    <input type="button" onclick="open1()" value="window.open('demo2.html');" />
</li>

새로운 탭이 열리면서 demo2.html 파일이 열린 모습

 

 

 

window.open('_self') 메소드 ( 두번째 인자값으로 '_self' 라는 값을 입력 )

<li>
    두번째 인자는 새 창의 이름이다. _self는 스크립트가 실행되는 창을 의미한다.<br />
    <input type="button" onclick="open2()" value="window.open('demo2.html', '_self');" />
</li>

새탭이 열리지 않고 현재 탭에서 demo2.html 파일 열린 모습

 

 

window.open('_blank') 메소드 ( 두번째 인자값으로 '_blank' 라는 값을 입력 )

<li>
    _blank는 새 창을 의미한다. <br />
    <input type="button" onclick="open3()" value="window.open('demo2.html', '_blank');" />
</li>

_blank라는 값은 클릭 시 계속 새창을 오픈하게 됨

 

 

 

 

 

_self, _blank 값은 미리 정해져있는 값 ( 약속된 값 ) 

open 이라고 하는 태그는 자바스크립트를 이용해서 a태그를 사용자가 직접 클릭한 것과 동일한 효과를 냄

 

 

 

 

 

 

window.open('ot') 메소드 ( 두번째 인자값으로 'ot' 라는 값을 입력 )

<li>
    창에 이름을 붙일 수 있다. open을 재실행 했을 때 동일한 이름의 창이 있다면 그곳으로 문서가 로드된다.<br />
    <input type="button" onclick="open4()" value="window.open('demo2.html', 'ot');" />
</li>

ot라는 값을 주면 새창이 생기는데 이창은 ot라는 이름을 가지게 됨

그 다음부터 다시 클릭 시 두번째 인자로 ot라는 값을 또 주면 

처음에 ot라는 값을 준 새창에서 내용이 갱신됨

 

 

 

 

 

세번째 인자 값을 주게 되면 새 창이 생성됨

<li>
    세번재 인자는 새 창의 모양과 관련된 속성이 온다.<br />
    <input type="button" onclick="open5()" value="window.open('demo2.html', '_blank', 'width=200, height=200, resizable=yes');" />
</li>

속성으로 준 사이즈로 새창이 오픈 

 

 

 

 

 

새 창에 접근( 상호작용 ) 

새로운 창을 띄우고 새로운 창과 커뮤니케이션 하기 

아래 예제는 보안상의 이유로 실제 서버에서만 동작하고, 같은 도메인의 창에 대해서만 작동 함 

 

<!DOCTYPE html>
<html>
<body>
    <input type="button" value="open" onclick="winopen();" />
    <input type="text" onkeypress="winmessage(this.value)" />
    <input type="button" value="close" onclick="winclose()" />
    <script>
    function winopen(){
        win = window.open('demo2.html', 'ot', 'width=300px, height=500px');
    }
    function winmessage(msg){
        win.document.getElementById('message').innerText=msg;
    }
    function winclose(){
        win.close();
    }
    </script>
</body>
</html>

 

open 버튼 클릭 시 새 창이 열림 ( demo2.html 실행 )

 

텍스트상자안에 텍스트 변경 하면 새창에서도 변경이 됨

 

close 클릭 시 새 창이 닫힘

 

 

 

 

 

 

팝업 차단 ( 보안 ) 

사용자의 인터렉션이 없이 창을 열려고 하면 팝업이 차단된다. 

 

locallhost 같은 도메인인 경우에만 원격으로 제어하는 작업 

open은 가능하지만 도메인이 틀릴경우 내용을 수정해도 

내용이 변경되는 그런 작업을 할수가 없음

 

 

 

<!DOCTYPE html>
<html>
<body>
    <script>
    window.open('demo2.html');
    </script>
</body>
</html>

'Javascript > BOM' 카테고리의 다른 글

Navigator 객체  (0) 2023.01.25
Location 객체 ( URL 관련 )  (0) 2023.01.25
BOM ( 전역객체, 사용자와 커뮤니케이션 수단 )  (0) 2023.01.24

Navigator 객체란

브라우저의 정보를 제공하는 객체다. 주로 호환성 문제등을 위해서 사용

 

 

크로쓰브라우징(cross browsing)

익스플로러, 파이어폭스, 크롬, 사파리 등 인터넷브라우저는 W3X(HTML, CSS)  , ECMA(자바스크립) 국제표준화 기구에

웹표준 규제에 따라서 만들어짐 이는 다양한 컴퓨터 환경이나 브라우저 정보를 동일하게 표현하기 위해 필요함

 

 

해당 명령을 통해서 이객체의 모든 프로퍼티를 열람할 수 있다.

 

appName : 웹브라우저의 이름 IE는 Microsoft Internet Explorer, 파이어폭스, 크롬등은 Nescape로 표시

 

appVersion : 브라우저의 버전을 의미

 

 

userAgent : appVersion 내용과 비슷할수 있으나 브라우저가 서버측으로 전송하는  USER-AGENT HTTP 헤더의 내용이다.

 

 

platform : 브라우저가 동작하고 있는 운영체제에 대한 정보

 

 

 

 

 

 

기능 테스트

Navigator 객체는 브라우저 호환성을 위해서 주로 사용하지만 모든 브라우저에 대응하는 것은 쉬운 일이 아니므로 아래와 같이 기능 테스트를 사용하는 것이 더 선호

 

 

예를 들어 Object.keys라는 메소드는 객체의 key 값을 배열로 리턴하는 Object의 메소드다. 이 메소드는 ECMAScript5에 추가되었기 때문에 오래된 자바스크립트와는 호환되지 않는다. 아래의 코드를 통해서 호환성을 맞출 수 있음

 

<script>
    if (!Object.keys) {
        Object.keys = (function () {
            'use strict';
            var hasOwnProperty = Object.prototype.hasOwnProperty,
                hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),
                dontEnums = [
                    'toString',
                    'toLocaleString',
                    'valueOf',
                    'hasOwnProperty',
                    'isPrototypeOf',
                    'propertyIsEnumerable',
                    'constructor'
                ],
                dontEnumsLength = dontEnums.length;

            return function (obj) {
                if (typeof obj !== 'object' && (typeof obj !== 'function' || obj === null)) {
                    throw new TypeError('Object.keys called on non-object');
                }

                var result = [], prop, i;

                for (prop in obj) {
                    if (hasOwnProperty.call(obj, prop)) {
                        result.push(prop);
                    }
                }

                if (hasDontEnumBug) {
                    for (i = 0; i < dontEnumsLength; i++) {
                        if (hasOwnProperty.call(obj, dontEnums[i])) {
                            result.push(dontEnums[i]);
                        }
                    }
                }
                return result;
            };
        }());
    }
</script>

if (!Object.keys) 앞에 !은 부정

만약에 Object라는 객체가 keys는 메소드를 가지고 있지 않다면  해당 if조건문 실행 ( 해당 기능 실행 ) 

저 메소드를 가지고 있는 브라우저는 브라우저에 내장된 메소드 사용하게 둠

( 브라우저에 내장되어 있는거 사용하는게 정식이기 때문에 ) 

하지만 해당 코드로 브라우저마다 다르게 동작하는 부분들을 해당 코드가 보정해 줄 순 없음

만약에 브라우저 마다 다르게 동작하는 기능이 있다면 Navigator 객체를 통해서 

그 브라우저 종류를 알게되고 이런 조건문으로 브라우저마다 다르게 동작 할수있도록 해야됨

 

Location 객체란 ? 

문서의 주소와 관련된 객체로 Window 객체의 프로퍼티다. 이 객체를 이용해서 윈도우의 문서 URL을 변경할 수 있고, 문서의 위치와 관련해서 다양한 정보를 얻을 수 있다.

 

 

 

 

현재 윈도우의 URL 알아내기

현재 url 검색 ( 둘다 값은 똑같이 나오나 보통은 href 사용함 )

 

Location 객체의 다양한 정보를 얻을수 있음

 

현재 url이 텍스트로 출력 ( alert 입력값은 문자열이 되야 되기 때문에 javascript가 Location객체를 문자화 시킴 )

 

 

 

 

 

 

URL Parsing

 

location 객체는 URL을 의미에 따라서 별도의 프로퍼티로 제공하고 있다.

 

 

port는 기본적으로 아무것도 출력이 안될시 기본 80임

 

pathname는 어떤 웹서비스에 접속했을때 웹사이트 구체적인 정보 ( 특정 값 )

 

search는 ?뒤에 따라오는 값 출력 ( id 값이나 정보 ) (애플리케이션에 전달한 값 )

 

 

hash는 #bookmark라고 url에 추가 하게 되면 웹페이지 특정 부분에 식별 ( 보통 북마킹이라고 함 )

 

 

 

 

 

URL 변경하기

이동할 url 입력 시
입력한 url로 입력되는 모습을 볼수 있다

 

해당 코드는 사용자를 특정 url로 이동 시키고 싶을때 사용함( 버튼을 클릭시 다른 url이동 ) 

 

 

 

새로고침

 

 

 

BOM (Browser Object Model) 이란?? 

 

웹브라우저의 창이나 프래임을 추상화해서 프로그래밍적으로 제어할 수 있도록 제공하는 수단

BOM은 전역객체인 Window의 프로퍼티와 메소드들을 통해서 제어

 

 

Window 객체

Window 객체는 모든 객체가 소속된 객체이고, 전역객체이면서, 창이나 프레임을 의미한다. 

 

전역객체

Window 객체는 식별자 window를 통해서 얻을 수 있다. 또한 생략 가능

 

이런식으로 생략 가능

 

 

사용자와 커뮤니케이션 하기

alert

경고창이라고 부른다. 사용자에게 정보를 제공하거나 디버깅등의 용도로 많이 사용

 

확인을 누를때 까지는 아무것도 할수 없음

 

<!DOCTYPE html>
<html lang="en">
<body>
    <input type="button" value="alue" onclick="alertfnc">

    <script>
      function alertfnc(){
        alert(1);
        alert(2);
        alert(3);
      }
      console.log(alertfnc())
    </script>
</body>
</html>

 

 

 

 

확인을 누르지않으면 경고창을 실행하는 동안은 그 다음 코드가 실행되지않음

 

 

confirm

 

확인을 누르면 true, 취소를 누르면 false를 리턴

 

 

 

해당 이미지처럼 출력 됨

<!DOCTYPE html>
<html>
    <body>
        <input type="button" value="confirm" onclick="func_confirm()" />
        <script>
            function func_confirm(){
                if(confirm('ok?')){
                    alert('ok');
                } else {
                    alert('cancel');
                }
            }
        </script>
    </body>
</html>

조건문으로 사용자에게 긍정적, 부정적 피드백 ( 사용자와 커뮤니케이션 가능 )

 

 

 

prompt

 

사용자로부터 입력을 받는 기능

 

 

 

<!DOCTYPE html>
<html>
    <body>
        <input type="button" value="prompt" onclick="func_prompt()" />
        <script>
            function func_prompt(){
                if(prompt('id?') === 'test'){
                    alert('welcome');
                } else {
                    alert('fail');
                }
            }
        </script>
    </body>
</html>

prompt 버튼을 누르고 id값 입력하라는 창이 나옴

 

 

test라는 입력값을 받게 되면 welcome

 

 

그외 다른값을 입력 받으면 fail이 나옴

 

 

 

출처 및 참고 : https://www.youtube.com/watch?v=mFawNZz_Uu0 얄코님 유튜브 

                        https://opentutorials.org/module/904/6633 생활코딩

'Javascript > BOM' 카테고리의 다른 글

창 제어(window.open, 새 창에 접근, 팝업 차단 )  (0) 2023.01.25
Navigator 객체  (0) 2023.01.25
Location 객체 ( URL 관련 )  (0) 2023.01.25

문서 객체 모델(Document Object Model) 은 HTML, XML 문서의 프로그래밍 interface이다. DOM은 문서의 구조화된 표현(structured representation)을 제공하며 프로그래밍 언어가 DOM 구조에 접근할 수 있는 방법을 제공하여 그들이 문서 구조, 스타일, 내용 등을 변경할 수 있게 도움

 

DOM 은 웹 페이지의 객체 지향 표현이며, 자바스크립트와 같은 스크립팅 언어를 이용해 DOM을 수정할 수 있다

 - JavaScript로 구현한 모든 동작들이 대체로 DOM을 수정하기 위한 

 - JavaScript는 브라우저가 읽고 어떤 작업을 할 수 있는 언어.
   DOM은 바로 이 작업이 이루어지는 장소

 - "JavaScript로 하는 것" 이라고 생각하는 것은 정확히는 "DOM API"

 

 

DOM을 사용하는 하는 이유?

 - 자바스크립트를 통해 HTML에서 데이터를 가져오고 싶을 때

 - 웹 페이지 데이터를 동적으로 변경하고 싶을 때

 - ineractive 한 웹 애플리케이션(Web App)을 만들고 싶을 때

 

 

 

브라우저에서 Parsing 후 DOM이 생성 ( HTML 요소들의 구조 트리형식 )

 

요소(보라색)들을 Node라고 부름 ( 이것들 하나하나가 모두 API라고 부름 )

 

title 변수에는 h1을 가지고 있고

 

textContent는 h1에 기능 거기다가 값을 대입하면 텍스트 값이 그걸로 바뀌도록

 

상속 구조

 

밑으로 들어오는 모든 요소들은 기능을 사용할수 있음

 

 

이 전체를 Web API라고 부름

 

3가지 모두 window 객체에 소속

 

 

 

 

 

출처 및 참고 : https://www.youtube.com/watch?v=mFawNZz_Uu0 얄코님 유튜브 

                        https://opentutorials.org/module/904/6633 생활코딩

+ Recent posts