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
.