Javascript에서 window 객체를 생성하는 방법

안녕하세요 :smile:

Javascript에서 window.open()을 통해 생성되는 window 객체를 다른 방식으로 가져올 순 없을까요?

문제의 소스코드는 다음과 같습니다.

var win = window.open('', 'Print', 'Width=400');
win.document.write(html);
win.onload = function() { 
    print(); 
}

해당 팝업을 open 하는 순간 아래에서 정의한 win.onload 지점에 도달할 수가 없는 것 같습니다.

html 안에 포함시키면 되겠지만,
혹시 win 객체를 open() 말고도 다른 방법으로 생성하고 onload 먼저 정의할 수 있는지 궁금합니다!

그래서 제가 원하는 소스코드는 다음과 같습니다.

// 이렇게!
var win = new window();

win.onload = function() { 
    print(); 
}
win.open('', 'Print', 'Width=400');
win.document.write(html);

읽어주셔서 감사합니다.

좋아요 2

안녕하세요.

onload 이벤트가 open하는 win 객체에서 발생해야하는 이벤트인건가요?

말씀하신대로 html 안에 포함시키거나, 별도의 html 파일과, print() 함수에 대한 js파일을 만든뒤, 호출하여 사용하셔야 하지 않을까싶습니다.

만약 open을 호출하는 window에서 print()를 호출하길 바라신다면, DOMContentLoaded 라는 이벤트도 있습니다.

여담으로, 동적으로 javascript가 생성되어 실행되게 허용하는 것은 그닥 좋은 방법이 아닙니다. XSS 취약점에 노출될 수 있습니다.

좋아요 3