5

インターネット上の多くの場所(このフォーラムのここを含む)で述べられている「スリープ」コマンドは機能しません。今では廃止されたコマンドですか?

私は次のようなVBScriptコードを書いています:

sub button1_onclick()
Wscript.Sleep 1000
div1.innerHTML = textbox1.value
end sub

1秒待ってから、その単純なコマンドを実行する必要があります。これは非常に単純なステートメントですが、機能しません。簡潔でシンプル。次のように言うたびにエラーが発生します。

必要なオブジェクト:'Wscript'

4

3 に答える 3

5

ダニエルの答えは、コンテキストがここで重要であることについて完全に正しいです。利用可能なメソッドはありませんが、WScriptメソッドを含む完全なブラウザー DOM がありますwindow.setTimeout。VBScript では、コードを渡すセマンティクスはsetTimeoutJavaScript とは少し異なりますが、それでも可能です。

Sub button1_onclick()
    window.setTimeout GetRef("Delayed"), 1000
End Sub

Sub Delayed()
    div1.innerHTML = textbox1.value
End Sub
于 2012-10-27T06:14:50.647 に答える
4

ping別のオプションは、(追加のスクリプトを避けたい場合)(ab)使用することです:

Sub Sleep(seconds)
  CreateObject("WScript.Shell").Run "%COMSPEC% /c ping 127.0.0.1 -n " _
    & seconds+1, 0, True
End Sub

pingnエコー要求を(ほぼ)1秒間隔で送信するため、エコー要求を送信することで-秒の遅延を得ることができn+1ます。

于 2012-10-27T10:57:27.823 に答える
2

ブラウザーから実行する場合、VBScript コードには Wscript オブジェクトがありません。これはスタンドアロン VBS 専用です。そのため、Wscript.Sleep は廃止されたわけではなく、回避策がないとブラウザーで機能しないだけです。

このスレッドは、潜在的な回避策を示唆しています。この投稿の残りの部分は、リンクされたページの mayayana によるエントリからのものです。

セキュリティで WScript.Shell の実行が許可されている場合は、次の方法で実行できます -

Web ページのスクリプト サブ:

<SCRIPT LANGUAGE="VBScript">
Sub Sleep(NumberSeconds)
Dim SH, Ret
Set SH = CreateObject("WScript.Shell")
Ret = SH.Run("sleeper.vbs " & NumberSeconds, , True)
End Sub
</SCRIPT>

Web ページと同じフォルダーに、sleeper.vbs という名前のファイルを置き、次のコードを入れます。

Dim Arg
on error resume next
Arg = WScript.Arguments(0) * 1000
WScript.sleep Arg

次に、次のようなものを呼び出すことができます。

Sleep 5'-- 5 秒間一時停止します。

于 2012-10-27T00:38:02.120 に答える