Не пропускайте ничего из Javascript в VBScript в IE9

У меня есть структура, написанная в VBScript. Внутри какой-либо функции в этой структуре параметр функции проверяется для оператора Nothing in If, а затем выполняются некоторые действия. Код, который использует фреймворк, написанный в Javascript. Поэтому мне нужно передать 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.

Как я могу передать Nothing из Javascript в VBScript в IE9?

Извините, я знаю это уродливо, но я в ловушке. И ненавижу VBScript.

изменить Существует пример функции фреймворка. Я не могу его изменить, потому что он широко используется в приложении.

Function ExampleFunction(val)
    If (val Is Nothing) Then
        ExampleFunction = 1
    Else
        ExampleFunction = 0
    End If
End Function

Обновление

Завершена работа. Найден лучший.

4b9b3361

К сожалению, вы, вероятно, застряли здесь - у JavaScript нет эквивалента "Ничего". Подробнее см. Эта статья.

[Изменить] Однако может работать следующее. В VBScript создайте функцию "GetNothing", которая возвращает "Nothing". В вашем JavaScript используйте "var jsNothing = GetNothing()". Поставляется из в этой статье

17
ответ дан 16 февр. '12 в 19:37
источник

Этот вопрос увлекательный, я подумал, что попробую ответить на него просто ради удовольствия.

(Поздравляем с миксером, чтобы получить лучшую работу!)

У меня нет доступа к 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 script вызывать подобные функции... и вам придется иметь дело с большим количеством аргументов.

4
ответ дан 24 окт. '14 в 20:00
источник

Используйте значение, такое как нуль или даже отрицательное число, которое позволит вам просто использовать оценки фальшивки, тогда вам не нужно беспокоиться о разных браузерах и их причудах при оценке объекта NULL.

0
ответ дан 28 сент. '11 в 9:56
источник