strings operator dim basics and javascript vbscript internet-explorer-9

operator - No pasar nada de Javascript a VBScript en IE9



vbscript messages (3)

Tengo un marco escrito en VBScript. Dentro de alguna función en este marco, el parámetro de la función se marca para Nothing en If y luego se ejecutan algunas acciones. Código que usa framework escrito en Javascript. Entonces, necesito pasar Nothing para funcionar para realizar algunas acciones. En IE8 y versiones anteriores trabajó el próximo enfoque:

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

En IE <9, la salida será: Nothing, Null, Nothing.

En IE9: Nothing, Null, Null.

¿Cómo puedo pasar nada de Javascript a VBScript en IE9?

Lo siento, sé que es feo, pero estoy atrapado. Y odio VBScript.

editar: hay un ejemplo de función de marco. No puedo cambiarlo porque es ampliamente utilizado en la aplicación.

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

Actualizar

Trabajo abandonado Encontré uno mejor.


Desafortunadamente, probablemente estés atrapado aquí; JavaScript no tiene un equivalente de "Nada". Ver este artículo para más información.

[Editar] Sin embargo, lo siguiente puede funcionar. En su VBScript, cree una función llamada "GetNothing" que devuelve "Nothing". En su JavaScript use "var jsNothing = GetNothing ()". Viene de este artículo


Esta pregunta es fascinante, pensé que trataría de responderla solo por el gusto de hacerlo.

(¡Felicidades a Mixel por conseguir un mejor trabajo!)

No tengo acceso a IE ahora mismo, así que no puedo probar esto, pero ¿qué pasaría si intentaras escribir una función como esta?

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

Por supuesto, no sé si la secuencia de comandos VB permite funciones de llamadas como esa ... y tendría que lidiar con más / menos argumentos.


Use un valor como cero o incluso un número negativo que le permita simplemente usar evaluaciones falsas, entonces no tiene que preocuparse por diferentes navegadores y sus peculiaridades al evaluar el objeto NULL .