var myImg = document.getElementById("myImg");
myImg.onload = function() {
var width = myImg.width;
}
myImg.src = "banana.png"
위의 코드에서 이미지로딩과 함수의 순서를 바꿔도 상관없지않나요?
항상 이미지로딩을 지시하기전에 onload리스너를 먼저 등록해야하는 이유라도 있나요?
myImg.src = "banana.png"
myImg.onload = function() {
var width = myImg.width;
}
이렇게 해도 문제가 없을것같아요. 어차피 이미지가 완전히 로딩된후에 함수가 실행되므로.
2019.08.20 15:50
교재 413page 질문입니다.
조회 수 98 댓글 1
QnA
공부하면서 궁금했던 것을 질문해보세요.
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
공지 | 읽어주세요! 연습문제 및 실습문제 정답 공개에 관한 공지입니다. | 관리자 | 2017.06.20 | 18281 |
403 | 혹시 예전 서적인 "DHTML + 자바스크립트 프로그래밍"의 예제를 받을 수 있는 방법은 없는지요? 2 | 비만타쿠미 | 2018.09.26 | 116 |
402 | 한글html 1 | 키보드 향기 | 2020.03.29 | 922 |
401 | 한글 타이틀이 깨져 보입니다. 1 | 안스가리오 | 2020.01.06 | 116 |
400 | 표와 div span 4 | 키보드 향기 | 2020.04.05 | 109 |
399 | 페이지에 첨부하고 싶은 이미지의 위치에대해 궁금합니다 1 | 정택희 | 2017.02.13 | 277 |
398 | 페이지 247 에 있는 Open Challenge 05 의 CSS3로 태그 배치하기를 공부하고 있는데 질문드립니다. 1 | 워니고 | 2018.03.28 | 3878 |
397 | 테스트 | 관리자 | 2019.08.30 | 171 |
396 | 태그와 속성 2 | tc0712 | 2021.09.08 | 72 |
395 | 크롬 오디오 자동재생 관련 질문입니다! 1 | ^_^ | 2018.09.30 | 449 |
394 | 코드 잘못된 부분을 봐주시면 정말 감사하겠습니다 1 | 입문한 사람 | 2020.04.01 | 607 |
393 | 캔버스 관련 질문 1 | 원그리기 | 2021.08.22 | 101 |
392 | 챕터2 연습문제 8번 | 김석현 | 2018.04.22 | 156 |
391 | 챕터 3의 10번 문제 1 | 컴공과 입문 | 2018.03.20 | 125 |
390 | 책을 종이책으로 구매했는데 1 | ddd | 2024.03.21 | 103 |
389 | 책을 마치며 7 | 은성 | 2017.04.13 | 492 |
388 | 책 151p 3장 오픈챌린지 문제질문입니다. 3 | 이상민 | 2019.07.19 | 239 |
387 | 짝수번 정답 3 | idididid | 2017.12.24 | 3136 |
386 | 질문입니다 1 | 1213 | 2018.03.06 | 420 |
385 | 질문드립니다. 1 | ㅇㅇ | 2020.06.03 | 306 |
384 | 질문 있습니다. 2 | 흠 | 2021.08.19 | 134 |
그렇지 않습니다. 413페이지의 본문을 다시 읽어보세요.
다음 코드의 경우
myImg.src = "banana.png" (1)
myImg.onload = function() { (2)
var width = myImg.width; (3)
}
(1)의 코드가 실행될 때, 이미지 로딩을 시작합니다.
그런데 로딩의 속도가 빨라 (2)의 코드가 미처 실행되기 전에 로딩이 완료되어 load 이벤트가 발생할 수 있습니다.
현재 이렇게 발생한 load 이벤트를 받아 줄 리스너가 아직 없는 상태입니다. (2)의 코드 실행이 완료되지 않았기 때문에.
그러면 브라우저는 load 이벤트를 처리할 리스너가 있는 지 확인하고 없는 경우 load 이벤트를 제거합니다.
그 후 (2)의 코드가 실행되지만, load 이벤트는 이미 사라진 상태이므로
(1)의 과정에서 발생한 load 이벤트를 처리하지 못하게 되고
(3)의 코드는 실행되지 않게 됩니다.
그래서 자바스크립트 프로그램을 작성할 때, 어떤 경우든 이벤트 리스너의 등록이 먼지 이루어지도록 코딩하는 것이 매우 중요합니다.