[javascript] IE9에서 Javascript에서 VBScript로 아무것도 전달하지 않음
VBScript로 작성된 프레임 워크가 있습니다. 이 프레임 워크의 일부 함수 내에서 함수의 매개 변수가 If 문에서 Nothing인지 확인한 다음 일부 작업이 실행됩니다. 자바 스크립트로 작성된 프레임 워크를 사용하는 코드. 따라서 일부 작업을 수행하려면 Nothing을 전달해야합니다. IE8 및 이전 버전에서는 다음 접근 방식으로 작동했습니다.
<script type="text/vbscript">
Function Test(val)
If (IsNull(val)) Then
Test = "Null"
ElseIf (IsObject(val)) Then
If (val Is Nothing) Then
Test = "Nothing"
End If
End If
End Function
Dim jsNothing
Set jsNothing = Nothing
msgBox(Test(jsNothing))
msgBox(Test(Null))
</script>
<script type="text/javascript">
alert(Test(jsNothing));
</script>
IE <9에서 출력은 Nothing, Null, Nothing입니다.
IE9 : Nothing, Null, Null.
IE9에서 Javascript에서 VBScript로 아무것도 전달하지 않으려면 어떻게해야합니까?
미안하지만 못생긴 건 알지만 갇혔어요. 그리고 VBScript를 싫어하십시오.
편집 :
프레임 워크 기능의 예가 있습니다. 응용 프로그램에서 널리 사용되기 때문에 변경할 수 없습니다.
Function ExampleFunction(val)
If (val Is Nothing) Then
ExampleFunction = 1
Else
ExampleFunction = 0
End If
End Function
최신 정보
직장을 그만 두었습니다. 더 나은 것을 찾았습니다.
답변
불행히도 당신은 아마 여기에 갇혀있을 것입니다. JavaScript에는 “Nothing”에 해당하는 것이 없습니다. 자세한 내용은 이 기사 를 참조하십시오.
[편집] 그러나 다음은 작동 할 수 있습니다. VBScript에서 “Nothing”을 반환하는 “GetNothing”이라는 함수를 만듭니다. JavaScript에서 “var jsNothing = GetNothing ()”을 사용하십시오. 이 기사 에서 온
답변
이 질문은 흥미 롭습니다. 저는 그저 재미를 위해서 대답하려고 노력할 것이라고 생각했습니다.
(좋은 직장을 얻는 것에 대해 mixel을 축하합니다!)
지금은 IE에 액세스 할 수 없어서 테스트 할 수 없지만 다음과 같은 함수를 작성하려고하면 어떻게됩니까?
<script type="text/vbscript">
Function CallWithNulls(fn, arg1, arg2, arg3)
If (isNull(arg1)) arg1 = Nothing
If (isNull(arg2)) arg2 = Nothing
If (isNull(arg3)) arg3 = Nothing
fn(arg1, arg2, arg3)
End Function
Function IsNothing(arg1, arg2, arg3)
return arg1 is Nothing
End Function
</script>
<script type="text/javascript">
alert(CallWithNulls(IsNothing, null, 1, 2));
</script>
물론 VB 스크립트가 이와 같은 함수를 호출 할 수 있는지 여부는 알 수 없으며 더 많은 / 더 적은 인수를 처리해야합니다.
답변
단순히 거짓 평가를 사용할 수있는 0 또는 음수와 같은 값을 사용하면 NULL
개체 를 평가할 때 다른 브라우저와 그 특성에 대해 걱정할 필요가 없습니다 .
답변
예를 들어 이와 같은 것이 작동하지만 브라우저가 IE11 이상이면 ‘meta’태그가 필요합니다.
<HTML>
<HEAD>
<meta http-equiv="x-ua-compatible" content="IE=10">
<TITLE>Pass Javscript to VBScript</TITLE>
<script>
var val = "null";
window.alert("Test: " + val);
</script>
<script type="text/vbscript">
PassNothing(val)
Sub PassNothing(value)
If LCase(value) = "null" Then
MsgBox "Java passed 'null' so VBScript = 'Nothing'"
Else
Msgbox "Nothing received"
End If
End Sub
</script>
</HEAD>
</HTML>