J'ai un framework écrit en VBScript. À l'intérieur de certaines fonctions de ce cadre, le paramètre de la fonction est vérifié pour rien dans l'instruction If, puis certaines actions sont exécutées. Le code qui utilise le cadre est écrit en Javascript. J'ai donc besoin de passer Nothing à la fonction pour exécuter certaines actions. Dans IE8 et les versions antérieures, l'approche suivante a fonctionné :
<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>
Dans IE < 9 la sortie sera : Rien, Nul, Rien.
Dans IE9 : Rien, Nul, Nul.
Comment puis-je faire passer Nothing de Javascript à VBScript dans IE9 ?
Désolé, je sais que c'est moche, mais je suis coincé. Et je déteste le VBScript.
éditer : Il y a un exemple de fonction cadre. Je ne peux pas le modifier car il est largement utilisé dans l'application.
Function ExampleFunction(val)
If (val Is Nothing) Then
ExampleFunction = 1
Else
ExampleFunction = 0
End If
End Function
Mise à jour
J'ai quitté mon travail. J'en ai trouvé un meilleur.
10 votes
Petite parenthèse : VBScript n'a pas d'opérateurs logiques court-circuités donc la déclaration
IsObject(val) And val Is Nothing
entraînera toujours une erreur. Vous devrez le diviser en un If imbriqué.0 votes
Je l'ai fermé comme étant trop localisé pour vous. À l'avenir, vous pouvez simplement nous le signaler :)
0 votes
Est-ce que VBScript dispose de And Also ? Je sais que VB.Net l'a. Aussi nul que cela puisse être, au moins cela permet de faire des courts-circuits.
0 votes
@vbullinger : Non, il n'a pas de logique paresseuse. blogs.msdn.com/b/ericlippert/archive/2004/07/15/184431.aspx -Article d'Eric Lippert.