[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>


답변