JavaScriptでsleepの実装を試みる
JavaScriptで、sleepという話が出ているのを見かけ、そういえば1年程前のJavaScript触りはじめの頃に私も調べたなぁ……と懐かしく思い出されました……けれども、あれ、結局方法見付けたんだっけ?
var startTime = (new Date()).getTime() ;
var stopTime = startTime + Math.floor(1000*sec) ;
for (;;) {
var curTime = (new Date()).getTime() ;
if ( stopTime <= curTime ) break ;
}
} // end of JSleep_NowaitLoop()
- ダイアログを非表示に出来ない(方法がわからない)。
- そもそもIEでしか動かない。
要は、
- 適当なファイルをXMLHttpRequestで取得。
- XMLHttpRequestは同期モードで使用(Sjax……だっけ?)。
function JSleep( sec ) {
var startTime = (new Date()).getTime() ;
var stopTime = startTime + Math.floor(1000*sec) ;
for (;;) {
var xmlHttpObj = null ;
if ( typeof ActiveXObject != "undefined" ) {
var msXml = [ 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP' ] ;
for ( var ci=0; ci < msXml.length; ci++ ) {
xmlHttpObj = new ActiveXObject( msXml[ci] ) ;
if ( xmlHttpObj ) break ;
}
}
else if ( typeof XMLHttpRequest != "undefined" ) {
xmlHttpObj = new XMLHttpRequest() ;
}
if ( !xmlHttpObj ) break ;
for (;;) {
var curTime = (new Date()).getTime() ;
if ( stopTime <= curTime ) break ;
xmlHttpObj.open( 'GET', JSleepDummyFile + '?time=' + curTime, false ) ;
xmlHttpObj.send( null ) ;
}
break ;
}
} // end of JSleep()
2007/02/16(金) 07:47 | 固定リンク
| 記事の編集(管理者用)
「おもいつき」カテゴリの記事
- ちょっと小細工:textareaの高さを自動調節(2008.05.21)
- Yin and Yang:動作改善(?)他(2008.05.14)
- ノイズキャンセル(マスク|マイク)ってないのかな?(2008.05.07)
- 『はてブBOX』と、ココログ用『はてブコメント表示欄』スクリプトの更新(2008.05.05)
- Yin and Yang:リンク先の内容をその場で表示するスクリプトの更新(2008.05.02)
「パソコン・インターネット」カテゴリの記事
- ツールを作る側は対象に与える影響をどこまで気にするか?(2008.05.29)
- "『無断リンクはやめて』という人にはしない方向で"の思考過程(2008.05.24)
- 『無断リンクはやめて』という人にはしない方向で(2008.05.22)
- ちょっと小細工:textareaの高さを自動調節(2008.05.21)
- Yin and Yang:動作改善(?)他(2008.05.14)
「覚書」カテゴリの記事
- ちょっと小細工:textareaの高さを自動調節(2008.05.21)
- Google検索結果画面のHTML構造、変わりました?(2008.04.30)
- Googleの検索結果からH2タグが消える現象の原因(2008.05.03)
- 【JScript】ActiveXObject('htmlfile')で発生する不具合(2008.04.05)
- 【JavaScript】onmouseover/onmouseoutの振る舞い(2008.03.11)


ネットワーク負荷が高まるので嫌な感じです。
あと、firefoxの実装の問題でもあるのですが、NowaitLoopもファイル取得もfirefox全体が止るのも嫌な感じです。
投稿 おーの | 2007/02/17 1:32:49
まぁ、もともと無理は承知なわけですが。
#もっとスマートな実装方法あれば教えてください。
| ネットワーク負荷
回線状態がよい環境ほどかかりますからね(苦笑)。
当方の環境(Bフレッツ100M)だと上下併せて800~1000パケット/10秒程度。~1Mbpsってところですかね。
| firefox全体が止る
IEもとまります。
XP上で試すと、
■IE6 SP2:全体停止。複数クライアント起動の場合、実行中のもの以外は動作。
■Firefox2.0.0.1:全体停止。複数クライアント起動の場合、実行中のもの以外も停止。
■Opera9.10:実行中もブラウザ操作可能。
#Firefox、意外といけてない……
ちなみに、XMLHttpRequestを同期モードで実行中には、setTimeoutによる割込もブロックされて(待たされて)しまいます<IE6とFirefox(Operaは未確認)。
投稿 風柳>おーの さん | 2007/02/17 4:54:10
firefoxって、ネットワークとかDNS要求とかが複数窓で完全には独立していないように見えますね。スレッド化が中途半端とか?
投稿 おーの | 2007/02/17 16:13:39