У меня есть фреймворк, написанный на VBScript. Внутри некоторой функции в этой структуре параметр функции проверяется на Ничего в операторе 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.
Как я могу ничего не передавать из Javascript в VBScript в IE9?
Извините, я знаю, что это уродливо, но я в ловушке. И ненавижу VBScript.
изменить: есть пример функции фреймворка. Я не могу его изменить, потому что он широко используется в приложении.
Function ExampleFunction(val)
If (val Is Nothing) Then
ExampleFunction = 1
Else
ExampleFunction = 0
End If
End Function
Обновить
Уволился с работы. Нашел лучший.
IsObject(val) And val Is Nothing
все равно приведет к ошибке. Вам нужно будет разбить его на вложенный If.Ответы:
К сожалению, вы, вероятно, здесь застряли - JavaScript не имеет эквивалента "Nothing". См. Эту статью для получения дополнительной информации.
[Edit] Однако следующее может работать. В вашем VBScript создайте функцию с именем «GetNothing», которая возвращает «Nothing». В вашем JavaScript используйте «var jsNothing = GetNothing ()». Исходя из этой статьи
источник
Этот вопрос интересный, я подумал, что попробую ответить на него просто для удовольствия.
(Поздравляем Mixel с получением лучшей работы!)
У меня сейчас нет доступа к IE, поэтому я не могу это проверить, но что, если вы попытаетесь написать такую функцию:
Конечно, я не знаю, позволяет ли сценарий VB вызывать такие функции ... и вам придется иметь дело с большим / меньшим количеством аргументов.
источник
Используйте такое значение, как ноль или даже отрицательное число, которое позволит вам просто использовать ложные оценки, тогда вам не придется беспокоиться о разных браузерах и их особенностях при оценке
NULL
объекта.источник
Например, что-то вроде этого будет работать, но если браузер IE11 или новее, вам понадобится тег meta.
источник