在IE9中将Javascript从Javascript传递给VBScript
我有一个用VBScript编写的框架。 在这个框架里面的一些函数中,函数的参数在If语句中被检查为Nothing,然后执行一些动作。 使用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。
我怎样才能通过IE9的JavaScript从VBScript到VBScript?
对不起,我知道这很丑,但我被困住了。 而讨厌VBScript。
编辑:有一个框架function的例子。 我不能改变它,因为它在应用程序中被广泛使用。
Function ExampleFunction(val) If (val Is Nothing) Then ExampleFunction = 1 Else ExampleFunction = 0 End If End Function
更新
退出工作。 find了一个更好的。
不幸的是,你可能被困在这里 – JavaScript没有“Nothing”等价物。 有关更多信息,请参阅本文 。
[编辑]但是,以下可能工作。 在你的VBScript中创build一个名为“GetNothing”的函数,返回“Nothing”。 在你的JavaScript中使用“var jsNothing = GetNothing()”。 来自这篇文章
这个问题很有趣,我想我会试着回答它,只是为了它的乐趣。
(祝贺混合更好的工作!)
我现在还没有访问IE,所以我不能testing这个,但是如果你尝试写这样一个函数:
<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脚本是否允许调用这样的函数…而且你必须处理更多/更less的参数。
使用一个值,如零或甚至负数,这将允许您只是使用虚假评估,那么你不必担心不同的浏览器和他们的怪癖评估NULL
对象。