Mam framework napisany w VBScript. Wewnątrz jakiejś funkcji w tym frameworku parametr funkcji jest sprawdzany pod kątem Nothing w instrukcji If, a następnie wykonywane są pewne akcje. Kod wykorzystujący framework napisany w Javascript. Więc muszę przekazać Nic do funkcji, aby wykonać pewne czynności. W IE8 i wcześniejszych wersjach działało następne podejście:
<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>
W IE <9 wyjście będzie: Nothing, Null, Nothing.
W IE9: Nothing, Null, Null.
Jak mogę przekazać Nothing z JavaScript do VBScript w IE9?
Przepraszam, wiem, że to brzydkie, ale jestem uwięziony. I nienawidzę VBScript.
edycja: Jest przykład funkcji frameworka. Nie mogę tego zmienić, ponieważ jest szeroko stosowany w aplikacji.
Function ExampleFunction(val)
If (val Is Nothing) Then
ExampleFunction = 1
Else
ExampleFunction = 0
End If
End Function
Aktualizacja
Rzucił pracę. Znalazłem lepszy.
IsObject(val) And val Is Nothing
nadal będzie skutkować błędem. Będziesz musiał podzielić go na zagnieżdżone If.Odpowiedzi:
Niestety, prawdopodobnie utknąłeś w tym miejscu - JavaScript nie ma odpowiednika „Nothing”. Więcej informacji można znaleźć w tym artykule .
[Edytuj] Jednak poniższe mogą działać. W swoim VBScript utwórz funkcję o nazwie „GetNothing”, która zwraca „Nothing”. W swoim JavaScript użyj "var jsNothing = GetNothing ()". Pochodzi z tego artykułu
źródło
To pytanie jest fascynujące, pomyślałem, że spróbuję odpowiedzieć na nie tylko dla przyjemności.
(Gratulacje z okazji znalezienia lepszej pracy!)
Nie mam teraz dostępu do IE, więc nie mogę tego przetestować, ale co by było, gdybyś próbował napisać taką funkcję:
Oczywiście nie wiem, czy skrypt VB pozwala na wywoływanie takich funkcji ... i musiałbyś mieć do czynienia z większą / mniejszą liczbą argumentów.
źródło
Użyj wartości takiej jak zero lub nawet liczba ujemna, która pozwoli ci po prostu użyć fałszywych ocen, a wtedy nie musisz martwić się o różne przeglądarki i ich dziwactwa w ocenie
NULL
obiektu.źródło
Na przykład coś takiego zadziała, ale jeśli przeglądarka to IE11 lub nowsza, będziesz potrzebować tagu „meta”.
źródło