>웹 프론트엔드 >JS 튜토리얼 >window.onload 사용 가이드_javascript 팁

window.onload 사용 가이드_javascript 팁

WBOY
WBOY원래의
2016-05-16 15:39:401814검색

웹 페이지의 자바스크립트 코드는 문서가 로드된 후 실행되어야 하는 경우가 많습니다. 그렇지 않으면 객체를 가져오지 못할 수 있으므로 다음 두 가지 방법을 사용하세요.

1. 스크립트 코드를 웹페이지 하단에 배치하여 스크립트 코드 실행 시 동작할 객체가 로딩되었는지 확인할 수 있도록 합니다.
2. window.onload를 통해 스크립트 코드를 실행합니다.

첫 번째 방법은 지저분하다고 느껴집니다(사실 권장됩니다). 스크립트 코드를 더 적절한 위치에 배치해야 하는 경우가 많으므로 window.onload 방법이 더 나은 선택입니다. window.onload는 이벤트입니다. 이 이벤트는 문서가 로드될 때 트리거됩니다. 이 이벤트에 대한 이벤트 핸들러를 등록하고 이벤트 핸들러에 실행할 스크립트 코드를 넣을 수 있습니다. . 먼저 코드 예제를 살펴보겠습니다.

<!DOCTYPE html>  
<html>  
<head>  
<meta charset=" utf-8">  
<title>window.onload用法</title>
<style type="text/css">
#bg{
 width:100px;
 height:100px;
 border:2px solid red;
}
</style>
<script type="text/javascript">
document.getElementById("bg").style.backgroundColor="#F90";
</script>
</head>
<body>
 <div id="bg"></div>
</body>
</html>

위 코드의 원래 의도는 div의 배경색을 #F90으로 설정하는 것이었지만, document.getElementById("로 코드가 실행될 때 순차적으로 실행되기 때문입니다. #bg").style. backgroundColor="#F90"이라고 적힌 시점에는 이 div 객체가 아직 로드되지 않았으므로 설정이 성공할 수 없습니다. 코드는 다음과 같이 수정됩니다.

<!DOCTYPE html>  
<html>  
<head>  
<meta charset=" utf-8">  
<title>位置高度div垂直居中</title>
<style type="text/css">
#bg{
 width:100px;
 height:100px;
 border:2px solid red;
}
</style>
<script type="text/javascript">
window.onload=function(){
 document.getElementById("bg").style.backgroundColor="#F90";
}
</script>
</head>
<body>
 <div id="bg"></div>
</body>
</html>

그 이유는 window.onload의 이벤트 처리 함수에 배경색을 설정하는 코드가 들어 있기 때문입니다. 문서가 로드될 때만 이벤트 처리 함수와 배경색을 설정하는 스크립트 코드가 실행됩니다.

이벤트 핸들러 함수 바인딩:

방법 1:

window.onload=function(){}, 위 코드에서 이 메서드는 이벤트 처리 함수를 window.onload 이벤트에 바인딩하는 데 사용됩니다. 물론 여기에 바인딩되는 것은 익명 함수입니다. 함수를 바인딩할 수도 있습니다. 코드 예는 다음과 같습니다.

<!DOCTYPE html>  
<html>  
<head>  
<meta charset=" utf-8">  
<title>window.onload用法详解</title>
<script type="text/javascript">
window.onload=function myalert()
{
");
}
</script>
</head>
<body>

</body>
</html>

위 코드는 myalert 메서드를 window.onload 이벤트에 바인딩할 수 있지만 다음과 같은 방식으로 여러 이벤트 핸들러를 이 이벤트에 바인딩할 수는 없습니다.

window.onload=function a(){}
window.onload=function b(){}

위 코드는 여러 이벤트 처리 함수를 window.onload 이벤트에 바인딩할 수 없지만 마지막 코드는 이전 함수를 모두 덮어씁니다. 하지만 코드는 수정할 수 있습니다.

<!DOCTYPE html>  
<html>  
<head>  
<meta charset=" utf-8">  
<title>window.onload用法</title>
<style type="text/css">
#bg{
 width:100px;
 height:100px;
 border:2px solid red;
}
</style>
<script type="text/javascript">
window.onload=function(){
 function a(){
  document.getElementById("bg").style.backgroundColor="#F90";
 }
 function b(){
  document.getElementById("bg").style.width="200px";
 }
 a();
 b();
}
</script>
</head>
<body>
 <div id="bg"></div>
</body>
</html>

위 코드는 여러 이벤트 처리 함수를 바인딩하는 것과 동일한 효과를 얻습니다.

방법 2:

addEventListener() 및 attachmentEvent()를 사용하여 이벤트 처리 기능을 onload 이벤트에 바인딩할 수 있습니다.
addEventListener()는 이벤트 처리 함수를 바인딩하는 현재 표준 방법이지만 IE8 이하 브라우저에서는 이 방법을 지원하지 않습니다.

<!DOCTYPE html>  
<html>  
<head>  
<meta charset=" utf-8">  
<title>window.onload用法</title>
<style type="text/css">
#bg{
 width:100px;
 height:100px;
 border:2px solid red;
}
</style>
<script type="text/javascript">
window.addEventListener("load",bg,false);
window.addEventListener("load",changeW,false);
function bg(){
 document.getElementById("bg").style.backgroundColor="#F90";
}
function changeW(){
 document.getElementById("bg").style.width="200px";
}
</script>
</head>
<body>
 <div id="bg"></div>
</body>
</html>

위 코드는 여러 이벤트 핸들러를 window.onload 이벤트에 바인딩할 수 있습니다. 구문 형식에 대한 간략한 소개:

addEventListener("type", 함수 이름, false)

addEventListener() 함수에는 세 개의 매개변수가 있습니다. 첫 번째 매개변수는 이벤트 유형입니다. 이벤트 유형 이름 앞에는 on이 있을 수 없습니다. 예를 들어 window.onload 이벤트는 다음과 같이만 작성할 수 있습니다. 두 번째 매개변수는 바인딩할 함수의 이름이고, 세 번째 매개변수는 일반적으로 false입니다.
AttachEvent() 함수를 사용하여 이벤트 처리 함수를 바인딩합니다.
IE9 이전의 IE 브라우저는 addEventListener() 함수를 지원하지 않으므로, attachmentEvent() 함수가 작동하게 됩니다.

<!DOCTYPE html>  
<html>  
<head>  
<meta charset=" utf-8">  
<title>window.onload用法</title>
<style type="text/css">
#bg{
 width:100px;
 height:100px;
 border:2px solid red;
}
</style>
<script type="text/javascript">
window.attachEvent("onload",bg);
window.attachEvent("onload",changeW);
function bg(){
 document.getElementById("bg").style.backgroundColor="#F90";
}
function changeW(){
 document.getElementById("bg").style.width="200px";
}
</script>
</head>
<body>
 <div id="bg"></div>
</body>
</html>

위 코드의 효과는 addEventListener() 함수를 사용한 것과 동일합니다. 구문 형식을 간단히 소개하겠습니다.

addEventListener("type", 함수 이름)

이 함수는 매개변수가 2개뿐입니다. 첫 번째 매개변수는 이벤트 유형이지만 addEventListener()의 첫 번째 매개변수와 기능은 동일하지만 이름 앞에 "on"이 있습니다. 첫 번째 매개변수는 바인딩할 이벤트 핸들러 함수의 이름입니다. 다양한 브라우저와 호환되기 위해서는 위의 코드를 수정해야 합니다.

<!DOCTYPE html>  
<html>  
<head>  
<meta charset=" utf-8">  

<title>window.onload用法</title>
<style type="text/css">
#bg{
 width:100px;
 height:100px;
 border:2px solid red;
}
</style>
<script type="text/javascript">
if(window.addEventListener){
 window.addEventListener("load",bg,false);
 window.addEventListener("load",changeW,false);
}
else{
 window.attachEvent("onload",bg);
 window.attachEvent("onload",changeW);
}

function bg(){
 document.getElementById("bg").style.backgroundColor="#F90";
}
function changeW(){
 document.getElementById("bg").style.width="200px";
}
</script>
</head>
<body>
 <div id="bg"></div>
</body>
</html>

위 코드는 주요 브라우저의 호환성 문제를 해결합니다. 위 코드에서 판단하려면 다음 코드를 사용하세요.

if(object.addEventListener){
 object.addEventListener();
}
else{
 object.attachEvent();
}

if 문을 사용하여 객체에 addEventListener 속성이 있는지 확인하세요. 그렇다면 addEventListener() 함수를 사용하고, 그렇지 않으면 attachmentEvent() 함수를 사용하세요.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.