묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
onLoad 가 두번 호출이 되었을 때
2003.04.29 18:54
a.js 와 b.js 가 어떤 페이지에서 필요하다고 할 때
<script language=javascript src=a.js></script>
<script language=javascript src=b.js></script>
라고 부르지 않습니까?
그런데 a.js에서 window.onload = a; 라고 온로드 이벤트를 사용하고 있는데
b.js에서도 또 onload = b; 라고 사용을 해야한다고 할 때
이 둘은 충돌이 일어나 어느 하나만 작동하게 됩니다.
마찬가지로
a.js 하나만 부르고 <body onload=b();> 라고 한다 해도 a.js에 있는 것만 먹히게 되더군요.
그렇다면 여기서 질문!
첫번째 경우에서 b.js 에서 onload = b; 를 하기 전에 이전에 지정이 된 함수,
그러니깐 a.js 에서 onload = a; 라고 한 a(); 라는 함수 값을 가져오는 방법이 없을까요?
함수값을 가져온다는 말은 body 태그에서는 onload="a(); b();" 이런식으로 두개의 함수를 같이 호출할 수 있잖습니까?
그것과 마찬가지로 스크립트 자체에서 앞에서 이미 onload에 지정된 함수에 덧붙여(!) 다른 함수를 추가 할순 없는지 궁금합니다.
물론 a.js에서 onload = a; 부분을 삭제하고
b.js 에다가 window.onload = function() { a(); b(); } 라고 두가지를 같이 호출해도 되고,
또 아예 a.js와 b.js 에서 onload 부분을 삭제하고 body 태그에서 두가지를 호출 할 수도 있겠지만
만약 a.js에 onload가 있는지 없는지 조차도 모를경우는 이런것이 필요하다고 생각하거든요.
다른 예를 들어보면
<script>
function a()
{ alert('a'); }
onload = a;
function b()
{ alert('b'); }
onload = b;
</script>
라고 되어 있는 경우 둘중 하나만 적용이 되고 나머지 하나는 무시가 되버리죠.
이걸 방지하는 방법이 있을까요?
뭐 순전히 제가 자바스크립트를 만들었다면 이런식으로 한다든지 하는 방법 말이죠.
onload = b; 이 부분을 onload = onload + b; 이렇게 하면 이전에 지정된 a와 b를 같이 호출한다는..
뭐 이런식의 방법은 없을까요?
정리를 하면,
a.js에 onload = a; 라고 되어 있을 경우
b.js에서 이미 onload에 지정되어 있는 a(); 라는 함수를 알아 내는 방법 또는
b.js에서 이미 onload에 지정되어 있는 a(); 라는 함수에 덧붙여 b.js에서 쓰는 b(); 라는 함수를 추가 하는 방법이 궁금합니다.
- CraZy GolMae™
(설마 불가능.. 한 것이진 않겠죠?)
<script language=javascript src=a.js></script>
<script language=javascript src=b.js></script>
라고 부르지 않습니까?
그런데 a.js에서 window.onload = a; 라고 온로드 이벤트를 사용하고 있는데
b.js에서도 또 onload = b; 라고 사용을 해야한다고 할 때
이 둘은 충돌이 일어나 어느 하나만 작동하게 됩니다.
마찬가지로
a.js 하나만 부르고 <body onload=b();> 라고 한다 해도 a.js에 있는 것만 먹히게 되더군요.
그렇다면 여기서 질문!
첫번째 경우에서 b.js 에서 onload = b; 를 하기 전에 이전에 지정이 된 함수,
그러니깐 a.js 에서 onload = a; 라고 한 a(); 라는 함수 값을 가져오는 방법이 없을까요?
함수값을 가져온다는 말은 body 태그에서는 onload="a(); b();" 이런식으로 두개의 함수를 같이 호출할 수 있잖습니까?
그것과 마찬가지로 스크립트 자체에서 앞에서 이미 onload에 지정된 함수에 덧붙여(!) 다른 함수를 추가 할순 없는지 궁금합니다.
물론 a.js에서 onload = a; 부분을 삭제하고
b.js 에다가 window.onload = function() { a(); b(); } 라고 두가지를 같이 호출해도 되고,
또 아예 a.js와 b.js 에서 onload 부분을 삭제하고 body 태그에서 두가지를 호출 할 수도 있겠지만
만약 a.js에 onload가 있는지 없는지 조차도 모를경우는 이런것이 필요하다고 생각하거든요.
다른 예를 들어보면
<script>
function a()
{ alert('a'); }
onload = a;
function b()
{ alert('b'); }
onload = b;
</script>
라고 되어 있는 경우 둘중 하나만 적용이 되고 나머지 하나는 무시가 되버리죠.
이걸 방지하는 방법이 있을까요?
뭐 순전히 제가 자바스크립트를 만들었다면 이런식으로 한다든지 하는 방법 말이죠.
onload = b; 이 부분을 onload = onload + b; 이렇게 하면 이전에 지정된 a와 b를 같이 호출한다는..
뭐 이런식의 방법은 없을까요?
정리를 하면,
a.js에 onload = a; 라고 되어 있을 경우
b.js에서 이미 onload에 지정되어 있는 a(); 라는 함수를 알아 내는 방법 또는
b.js에서 이미 onload에 지정되어 있는 a(); 라는 함수에 덧붙여 b.js에서 쓰는 b(); 라는 함수를 추가 하는 방법이 궁금합니다.
- CraZy GolMae™
(설마 불가능.. 한 것이진 않겠죠?)
댓글 2
-
구름
2003.04.29 20:25
-
CraZY™
2003.04.29 20:34
오, 되는데요!
function a()
{ alert("aaaaaaa"); }
window.onload = a;
function b()
{ alert("bbbbbbb"); }
function window::onload()
{
b();
}
라고 하니 a뜨고 b가 뜨는군요. 각각 따로 파일로 지정을 해줘도 마찬가지로 되는군요.
답변 감사합니다. ^^
한군데서는 window.onload = 함수 를 쓰고
다른쪽에선
function window::onload(){
함수
}
를 이용해서 onload이벤트를 캐취하는 방법밖에 모르겠네요..
저같은 경우엔 body onload=init() 이라는 걸 매 페이지마다 써주고 init() 함수에서 초기화를 거의 다 하다 보니까 충돌이 있을 경우에 안된다는걸 오늘 처음 알았네요.
더 좋은 정보 찾으면 알려 드리겟씁니다.