Tengo un marco escrito en VBScript. Dentro de alguna función en este marco, el parámetro de la función se verifica para la instrucción Nothing in If y luego se ejecutan algunas acciones. Código que usa framework escrito en Javascript. Así que necesito pasar Nada para funcionar para realizar algunas acciones. En IE8 y versiones anteriores funcionó el siguiente 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á: Nada, Nulo, Nada.
En IE9: Nada, Nulo, Nulo.
¿Cómo puedo pasar Nothing 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 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
Renunció al trabajo. Encontré uno mejor.
IsObject(val) And val Is Nothing
aún generará un error. Tendrás que dividirlo en un If anidado.Respuestas:
Desafortunadamente, probablemente esté atrapado aquí: JavaScript no tiene un equivalente de "Nada". Vea 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 ()". Proviene de este artículo
fuente
Esta pregunta es fascinante, pensé que intentaría responderla solo por diversión.
(¡Felicidades a Mixel por conseguir un mejor trabajo!)
No tengo acceso a IE en este momento, así que no puedo probar esto, pero ¿qué pasa si intentas escribir una función como esta?
Por supuesto, no sé si el script VB permite llamar a funciones como esa ... y tendrías que lidiar con más / menos argumentos.
fuente
Use un valor como cero o incluso un número negativo que le permita simplemente usar evaluaciones falsas, luego no tendrá que preocuparse por los diferentes navegadores y sus peculiaridades al evaluar el
NULL
objeto.fuente
Como ejemplo, algo como esto funcionará, pero si el navegador es IE11 o posterior, necesitará la etiqueta 'meta'.
fuente