Microsoft MVP성태의 닷넷 이야기
스크립트: 9. setTimeout 과 jscript/vbscript 혼용 문제 [링크 복사], [링크+제목 복사],
조회: 22224
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 


고객사로부터 DxIESaver 제품 관련하여 문의를 받았습니다.
그 문의에서 발견한 IE의 버그라고 해야 할까요.

제목에서 밝힌 것처럼, setTimeout(setInterval도 같은 문제가 있을 듯.) 메서드가 vbscript에서 사용될 때 해당 HTML 페이지에서 jscript 블럭이 있을 때 무조건 오류가 발생됩니다.

Internet Explorer의 내부 스크립트 엔진의 문제이니 만큼 원인에 대한 직접적인 파악은 할 수 없으므로, 다양하게 테스트한 현상만을 나열해 보겠습니다.

아래에 연이어 나오는 구문들 중에서 오류 발생 시 나타나는 대화창은 다음과 같습니다.
"
A Runtime Error has occurred.
Do you wish to Debug?

Line: 0
Error: 개체가 이 속성 또는 메서드를 지원하지 않습니다.
"
오류 화면

---------- 현상1: test.html ------------
조건: 상단에 jscript가 위치하고 하단에 vbscript가 위치. 
      vbscript 안에서 setTimeout 메서드를 호출

결과: 오류 발생
----------------------------------------

<script language="jscript">
// 실행 코드의 유무에 상관없이.
</script>

<script  language="vbscript">

 Sub window_onload()
   window.setTimeout "TestSub", 1000 
 End Sub
 
 Sub TestSub
 
 ' 실행 코드의 유무에 상관없이.
 End Sub

</script>



---------- 현상2: test.html ------------
조건: 위의 "현상1"에서 상단의 jscript를 vbscript 밑으로 복사한 경우

결과: 정상 동작
----------------------------------------

<script  language="vbscript">

 Sub window_onload()
   window.setTimeout "TestSub", 1000 
 End Sub
 
 Sub TestSub
 
 ' 실행 코드의 유무에 상관없이.
 End Sub

</script>

<script language="jscript">
// 실행 코드의 유무에 상관없이.
</script>


---------- 현상3: test.html ------------
조건: 상단에 vbscript가 위치하고 하단에 jscript가 위치. 
      jscript 안에서 setTimeout 메서드를 호출

결과: 정상 동작
----------------------------------------
<script language="vbscript">
' 실행 코드의 유무에 상관없이.
</script>


<script  language="jscript">

 function window.onload()
 {
   window.setTimeout( "TestFunc", 1000 );
 }
 
 function TestFunc()
 {
 // 실행 코드의 유무에 상관없이.
 }
</script>

---------- 현상4: test.html ------------
조건: 상단에 jscript가 위치하고 하단에 vbscript가 위치. 
      vbscript의 window_onload 메서드가 아닌,
      버튼의 click 이벤트에서 setTimeout 메서드를 호출

결과: 오류 발생
----------------------------------------

<script language="jscript">
// 실행 코드의 유무에 상관없이.
</script>


<script  language="vbscript">

 Sub TestSub
 ' 실행 코드의 유무에 상관없이.
 End Sub
 
 Sub BtnClick
	window.setTimeout "TestSub", 1000 
 End Sub

</script>

<input type=button onclick="BtnClick()" value="확인"></input>


---------- 현상4: test.html ------------
조건: vbscript에서 setTimeout 인자로 넘어갈 함수를 jscript의 것으로 넘겨주는 경우.

결과: 오류 화면은 나오지 않지만, TestSub 함수는 실제로 실행되지 않음.
----------------------------------------

<script language="javascript">
// 실행 코드의 유무에 상관없이.
function TestSub()
{
	alert( "TEST" );  
}
</script>


<script  language="vbscript">
  Sub BtnClick
	window.setTimeout "TestSub", 1000 
  End Sub
</script>









[최초 등록일: ]
[최종 수정일: 3/20/2023]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 181  [182]  183  184  185  186  187  188  189  190  191  192  193  194  195  ...
NoWriterDateCnt.TitleFile(s)
493정성태5/26/200728224오류 유형: 34. Windows Server 2008 : CA 인증서 발급 실패
492정성태5/23/200727676.NET Framework: 89. ManagedThreadId - 두 번째 이야기 [5]파일 다운로드1
491정성태5/21/200727935.NET Framework: 88. ManagedThreadId ? [4]
490정성태5/19/200736730오류 유형: 33. error MSB6003: SxS DLL 로딩 오류 [2]
489정성태5/14/200724412.NET Framework: 87. .NET 2.0에서 C# 3.0 기능 사용하기
488정성태5/14/200722683Windows: 25. Multiple Input Queues
487정성태4/24/200728386VC++: 32. VC++에서 bool이 가지는 의미 [3]
486정성태3/22/200727421Windows: 24. DreamScene과 DWM(Desktop Window Manager)의 관계 [1]
485정성태3/17/200722718오류 유형: 32. VS.NET 2005 - x64 환경에서의 mixed 디버깅 환경 구성
484정성태3/17/200721800오류 유형: 31. SQL Compact Edition 설치 후 오류
483정성태3/17/200743227오류 유형: 30. x64 환경: .NET + COM 프로젝트 실행 시 오류 - 80040154 [2]
482정성태3/17/200732603Team Foundation Server: 17. 팀 프로젝트 접속 및 사용
481정성태3/17/200726503Team Foundation Server: 16. 팀 프로젝트 읽기 전용 사용자 등록
480정성태3/14/200725070.NET Framework: 86. GC(Garbage Collector)의 변화
479정성태3/14/200728792개발 환경 구성: 25. D820 - ReadyBoost 구동
478정성태3/14/200728324개발 환경 구성: 24. D820 고주파음 문제
477정성태3/14/200737642개발 환경 구성: 23. 비스타 x64 버전에서 서명되지 않은 드라이버 사용 [4]
476정성태3/9/200732996개발 환경 구성: 22. D820 노트북 - 설치 및 BitLocker 구성 [1]
475정성태3/6/200727228.NET Framework: 85. 공용 프로퍼티 자동 생성
474정성태3/5/200725380.NET Framework: 84. Lambda 표현식 응용 사례 [1]
473정성태3/4/200732604디버깅 기술: 14. TFS 오류 추적(TF53010, TF14105)
472정성태3/3/200731842디버깅 기술: 13. 예외 발생 시 Minidump 생성 - WinDBG [3]파일 다운로드1
471정성태3/1/200720661디버깅 기술: 12. Managed Method에 Break Point 걸기
469정성태2/28/200732518디버깅 기술: 11. (Managed) Main Method에 Break Point 걸기 [3]파일 다운로드1
470정성태3/1/200723907    답변글 디버깅 기술: 11.1. (Managed) Main Method에 Break Point 걸기 - 내용 보강
468정성태2/25/200733683COM 개체 관련: 20. 탭 브라우저의 윈도우 핸들 구하기 [3]
... 181  [182]  183  184  185  186  187  188  189  190  191  192  193  194  195  ...