VBScriptで記述されたフレームワークがあります。このフレームワークの一部の関数内では、関数のパラメーターがIfステートメントにNothingがないかチェックされ、次にいくつかのアクションが実行されます。 Javascriptで記述されたフレームワークを使用するコード。したがって、アクションを実行するには、Nothingを機能に渡す必要があります。 IE8およびそれ以前のバージョンでは、次のアプローチが有効でした。
<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>
In IE <9出力は:Nothing、Null、Nothing。
IE9の場合:なし、ヌル、ヌル。
IE9でJavascriptからVBScriptにNothingを渡すにはどうすればよいですか?
申し訳ありませんが、私はそれがknowいことを知っていますが、私は閉じ込められています。そして、VBScriptが大嫌いです。
編集:フレームワーク関数の例があります。アプリケーションで広く使用されているため、変更できません。
Function ExampleFunction(val)
If (val Is Nothing) Then
ExampleFunction = 1
Else
ExampleFunction = 0
End If
End Function
更新
ジョブを終了しました。より良いものを見つけました。
この質問は魅力的で、楽しみのためだけに答えてみようと思いました。
(ミクセル、より良い仕事を得ることをおめでとうございます!)
私はIEにアクセスできないので、これをテストすることはできませんが、次のような関数を書いてみたらどうでしょうか:
<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>
もちろん、VBスクリプトがそのような関数の呼び出しを許可するかどうかはわかりません...
例として、このようなものは機能しますが、ブラウザがIE11以降の場合、「メタ」タグが必要になります。
<HTML>
<HEAD>
<meta http-equiv="x-ua-compatible" content="IE=10">
<TITLE>Pass Javscript to VBScript</TITLE>
<script>
var val = "null";
window.alert("Test: " + val);
</script>
<script type="text/vbscript">
PassNothing(val)
Sub PassNothing(value)
If LCase(value) = "null" Then
MsgBox "Java passed 'null' so VBScript = 'Nothing'"
Else
Msgbox "Nothing received"
End If
End Sub
</script>
</HEAD>
</HTML>
ゼロまたは負の数などの値を使用して、偽の評価を使用できるようにします。そうすれば、NULL
オブジェクトを評価する際に、さまざまなブラウザーとその癖を心配する必要がなくなります。