J'ai un framework écrit en VBScript. À l'intérieur d'une fonction dans ce paramètre de cadre de la fonction est vérifié rien dans l'instruction If, puis certaines actions exécutées. Code qui utilise un framework écrit en Javascript. J'ai donc besoin de passer Nothing pour fonctionner pour effectuer certaines actions. Dans IE8 et les versions antérieures, l'approche suivante fonctionnait:
<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: Nothing, Null, Nothing.
Dans IE9: Nothing, Null, Null.
Comment puis-je passer Nothing de Javascript à VBScript dans IE9?
Désolé, je sais que c'est moche, mais je suis piégé. Et déteste VBScript.
edit: Il existe un exemple de fonction de cadre. Je ne peux pas le changer car il est largement utilisé en application.
Function ExampleFunction(val)
If (val Is Nothing) Then
ExampleFunction = 1
Else
ExampleFunction = 0
End If
End Function
Mettre à jour
Travail abandonné. J'ai trouvé un meilleur.
IsObject(val) And val Is Nothing
entraînera toujours une erreur. Vous devrez le diviser en un If imbriqué.Réponses:
Malheureusement, vous êtes probablement bloqué ici - JavaScript n'a pas d'équivalent «Rien». Consultez cet article pour plus d'informations.
[Modifier] Cependant, ce qui suit peut fonctionner. Dans votre VBScript, créez une fonction appelée "GetNothing" qui renvoie "Nothing". Dans votre JavaScript, utilisez "var jsNothing = GetNothing ()". Provient de cet article
la source
Cette question est fascinante, j'ai pensé que j'essaierais d'y répondre juste pour le plaisir.
(Félicitations à Mixel pour avoir obtenu un meilleur travail!)
Je n'ai pas accès à IE pour le moment, donc je ne peux pas tester cela, mais que faire si vous avez essayé d'écrire une fonction comme celle-ci:
Bien sûr, je ne sais pas si le script VB permet d'appeler des fonctions comme ça ... et vous auriez à gérer plus / moins d'arguments.
la source
Utilisez une valeur telle que zéro ou même un nombre négatif qui vous permettrait d'utiliser simplement des évaluations fausses, alors vous n'avez pas à vous soucier des différents navigateurs et de leurs bizarreries lors de l'évaluation de l'
NULL
objet.la source
Par exemple, quelque chose comme ça fonctionnera, mais si le navigateur est IE11 ou une version ultérieure, vous aurez besoin de la balise «meta».
la source