Microsoft MVP성태의 닷넷 이야기
스크립트: 9. setTimeout 과 jscript/vbscript 혼용 문제 [링크 복사], [링크+제목 복사],
조회: 15832
글쓴 사람
정성태 (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

비밀번호

댓글 작성자
 




[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
13628정성태5/17/2024201개발 환경 구성: 709. Windows - WHPX(Windows Hypervisor Platform)를 이용한 Android Emulator 가속
13627정성태5/17/2024196오류 유형: 903. 파이썬 - UnicodeEncodeError: 'ascii' codec can't encode character '...' in position ...: ordinal not in range(128)
13626정성태5/15/2024249Phone: 15. C# MAUI - MediaElement Source 경로 지정 방법파일 다운로드1
13625정성태5/14/2024549닷넷: 2262. C# - Exception Filter 조건(when)을 갖는 catch 절의 IL 구조
13624정성태5/12/2024782Phone: 14. C# - MAUI에서 MediaElement 사용파일 다운로드1
13623정성태5/11/2024892닷넷: 2261. C# - 구글 OAuth의 JWT (JSON Web Tokens) 해석파일 다운로드1
13622정성태5/10/2024959닷넷: 2260. C# - Google 로그인 연동 (ASP.NET 예제)파일 다운로드1
13621정성태5/10/2024883오류 유형: 902. IISExpress - Failed to register URL "..." for site "..." application "/". Error description: Cannot create a file when that file already exists. (0x800700b7)
13620정성태5/9/20241025VS.NET IDE: 190. Visual Studio가 node.exe를 경유해 Edge.exe를 띄우는 경우
13619정성태5/7/2024986닷넷: 2259. C# - decimal 저장소의 비트 구조파일 다운로드1
13618정성태5/6/20241104닷넷: 2258. C# - double (배정도 실수) 저장소의 비트 구조파일 다운로드1
13617정성태5/5/20241048닷넷: 2257. C# - float (단정도 실수) 저장소의 비트 구조파일 다운로드1
13616정성태5/3/2024989닷넷: 2256. ASP.NET Core 웹 사이트의 HTTP/HTTPS + Dual mode Socket (IPv4/IPv6) 지원 방법파일 다운로드1
13615정성태5/3/2024947닷넷: 2255. C# 배열을 Numpy ndarray 배열과 상호 변환
13614정성태5/2/2024875닷넷: 2254. C# - COM 인터페이스의 상속 시 중복으로 메서드를 선언
13613정성태5/1/2024910닷넷: 2253. C# - Video Capture 장치(Camera) 열거 및 지원 포맷 조회파일 다운로드1
13612정성태4/30/2024930오류 유형: 902. Visual Studio - error MSB3021: Unable to copy file
13611정성태4/29/2024937닷넷: 2252. C# - GUID 타입 전용의 UnmanagedType.LPStruct - 두 번째 이야기파일 다운로드1
13610정성태4/28/20241007닷넷: 2251. C# - 제네릭 인자를 가진 타입을 생성하는 방법 - 두 번째 이야기
13609정성태4/27/20241047닷넷: 2250. PInvoke 호출 시 참조 타입(class)을 마샬링하는 [IN], [OUT] 특성파일 다운로드1
13608정성태4/26/20241117닷넷: 2249. C# - 부모의 필드/프로퍼티에 대해 서로 다른 자식 클래스 간에 Reflection 접근이 동작할까요?파일 다운로드1
13607정성태4/25/20241125닷넷: 2248. C# - 인터페이스 타입의 다중 포인터를 인자로 갖는 C/C++ 함수 연동
13606정성태4/24/20241079닷넷: 2247. C# - tensorflow 연동 (MNIST 예제)파일 다운로드1
13605정성태4/23/20241102닷넷: 2246. C# - Python.NET을 이용한 파이썬 소스코드 연동파일 다운로드1
13604정성태4/22/20241063오류 유형: 901. Visual Studio - Unable to set the next statement. Set next statement cannot be used in '[Exception]' call stack frames.
[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...