• ベストアンサー

XPでのwindow.setTimeout代用?

JAVA SCRIPT初心者です。 自分のHPで新規に開いた特定のページを指定時間後に閉じる為に window.setTimeoutを使っておりましたが、XP等ではうまく作動しないので困っています。  1.window.openで新しいページを開く。  2.window.setTimeoutで30秒後に1で開いたページを閉じる。 window.setTimeoutを使用しないで同じような事が出来るのでしょうか?  勉強不足なのですが、タイマーの関数、指定した開いているページを閉じる関数等があるのかどうかわかりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

<script language=javascript> function test(){ nwin=window.open("test.htm","","width=320,height=240") setTimeout("nwin.close()",3000) } </script> <button onClick="test()">testを開いて3秒後に閉じる</button>

milkpop000
質問者

お礼

ありがとうございます。無事に動作しました。

その他の回答 (2)

noname#22259
noname#22259
回答No.2

------parent.html---------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>Untitled</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <script type="text/javascript"> function openChild(){ window.open('child.html','subwin','width=300,height=300');} </script> </head> <body> <input type="button"value="Open-ChildWin" onclick="openChild()"> </body> </html> -----child.html----------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>Untitled</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <script type="text/javascript"> function closeMyself(){ setTimeout('self.close()',5000); } </script> </head> <body onload="closeMyself()"> </body> </html> --------------------------------------

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

たんなる文法間違いではないですか? 具体的なソースを簡潔にかいて、 どのブラウザとOSで問題があるか示すべきです。 XPもせめてHomeかProかくらいは書いた方がよいかと。

milkpop000
質問者

補足

自分なりに調べたつもりですが、説明不足ですみません。 使い方は違えども、下記が該当するのかどうか分からず質問してしまいました。 「BUG: Windows XP Service Pack 2 でwindow.setTimeout(window.close,1)メソッドを使って、 Internet Explorer ウィンドウを閉じることができません。」 http://support.microsoft.com/kb/884768/  • Microsoft Windows XP Professional  • Microsoft Windows XP Home Edition  • Microsoft Windows XP Service Pack 2  • Microsoft Windows XP Service Pack 2 自分でもXP Proを使用しております。

関連するQ&A

  • window.setTimeoutについて

    window.setTimeout - 指定秒後に処理を実行で、たとえばyahooのホームページを表示した5秒後に、googleのホームページを表示するにはどういうスクリプトにしたら良いですか?お願いします。 java script 初心者で、いきなり壁にぶち当たったのでよろしければ御教えください。

  • setTimeoutあるいはsetIntervalの限界

    いつもお世話になっています。 タイマーの実験をしてみようかと思い、タイマー関数のサンプルをちょっと触ってみて、気になることがありました。 スクリプトとしては、次のようなものです。 <HTML> <HEAD> <SCRIPT Language="JavaScript"> <!-- timerID = 10; count = 0; function timerX(){ status = "Counter is " + count++; } function clr(){ clearInterval(timerID); } // --> </SCRIPT> <BODY bgColor="white" onLoad="timerID = setInterval('timerX()',1000);"> (以下略) このスクリプトを実行すると、1秒毎に1カウント増えていきますから、ステータスに表示される数値は10秒で10になります。 ですから、1を指定する、つまりsetInterval('timerX()',1);にすれば、論理上、10秒で10000になるはずですよね? ところが実際にステータスに出る数値はそうはならず、かなり低い数字になってしまいます。 そこで質問なのですが、setTimeoutまたはsetIntervalでタイマーを作る場合、ミリ秒はどのくらいまで有効なのでしょうか。 ひょっとして、マシンに依存するのでまちまちなのでしょうか。 経験等でご存じの方、お教えください。

  • 別windowを開いて同じ関数を走らせたい

    別windowを開いて同じ関数を走らせたい 今回のスクリプトではブックマークレットAの形式で、あるページ(http://www.aaa?page=1&a=b)で実行すると同ドメインのpage=2,page=3・・・とブックマークレットAに定義した関数を実行しようとしています。firebugで開発をしています。 まずは、次のページ(page=今のページ+1)を開いて次のページで前のページで実行したブックマークレットAのスクリプトに定義された関数(と同じ効果のものでもOK)を実行させたいと思っています。 ---ブックマークレットAとして実行するスクリプト--- *試したコード1 function findUser(){(略)} var w=window.open(getXXXURL(++currentPage)); w.focus(); setTimeout("findUser(searchID,currentPage)",3000); →元のページでfindUserしてしまう(新しいページに適用したい) *試したコード2 function findUser(){(略)} var w=window.open(getXXXURL(++currentPage)); w.focus(); findUser(searchID,currentPage); →元のページでfindUserしてしまう(新しいページに適用したい) *試したコード3 function findUser(){(略)} var w=window.open(getXXXURL(++currentPage)); w.focus(); w.setTimeout("findUser(searchID,currentPage)",3000); →新しいページでfindUserが定義されてないのでエラー *試したコード4 function findUser(){(略)} var w=window.open(getComURL(++currentPage)); w.focus(); w.setTimeout("window.opener.findUser(window.opener.searchID,window.opener.currentPage)",3000); →元のページでfindUserしてしまう(新しいページに適用したい) このようにいろいろと試したのですが、どうにもうまくいきませんでした。 良いアイデア、例など、あなたのご意見、お待ちしております。

  • JavaScriptのsetTimeoutについて

    setTimeoutのタイマー処理の仕様を調べています。 var func = function () { alert(1); }; setTimeout(func, 1000); alert(2); このコードを実行した場合、alert(2)→alert(1)の順で処理されるのは当然ですが、 alert(2)を開いたまま1秒以上待ち、そこでOKボタンを押すとどうなるか、という問題です。 Firefoxの実装については下記ページで分かりました。 http://takoyakim.tumblr.com/post/10875885/firefox-settimeout 先ほどのコードの1000ミリ秒の経過処理は、タイマースレッドという専用スレッドで扱うため、 alert(2)で1000ミリ秒以上止めた後にOKボタンを押すと、即座にalert(1)が開きます。 しかしIEの場合はそうではなく、alert(2)を閉じてから約1000ミリ秒後にalert(1)が開きました。 alert(2)を開いたままどれだけ待機しても変わりません。 ChromeやSafariもIEと同じようです。 ですがこの結果は、次のコードの実行結果と矛盾してしまいました。 var heavyFunc = function () { for(var i = 0; i < 100000; i++) new Date(); } var startTime = +new Date(); var callCount = 0; var testFunc = function (x) { heavyFunc(); // (1) if (++callCount < 5) setTimeout(testFunc, 100); else alert(+new Date() - startTime); //heavyFunc(); // (2) }; testFunc(); heavyFuncという重い処理を、setTimeoutの前後のどちらに置くかという実験コードです。 setTimeoutのタイマー処理がFirefoxのように別スレッドで実行されているのであれば、 先にsetTimeoutを呼び出してからheavyFuncを実行した方が速く処理が完了するだろう、という想定です。 そして結果は、FirefoxだけでなくIEとChromeでも先にsetTimeoutを呼んだ方が速い、となりました。 結局どのブラウザも専用のタイマースレッドを実装しており、 alert関数が特殊(タイマースレッドもブロックする)なだけ、ということなのでしょうか? それとも私が何か見落としているのでしょうか。

  • JscriptでsetTimeout

    JscriptでIEを操作してあるページのリンクをクリックしたいです。 リンクにjavascriptが入っているため同期処理でクリックすると、 その先に進みません。 そのため非同期処理でクリックしたく、setTimeoutを使って 関数を作りましたが動きません。 setTimeout('function ck(ie,ID){ ie.document.querySelector(ID).click();}',10); ※ieはIEオブジェクト、iDはリンクのID属性です。 ちなみに上記をVBAから呼び出して動かしています。 setTimeoutをはずせば普通に動きました。 setTimeoutはwindowオブジェクトが必要なので、 それを省略しているのが悪いとも考えましたが、 VBAでどうやってIEのwindowオブジェクトを作るのかが分かりません。 setTimeout以外にも非同期実行できる方法があれば それでも構いません。 どうかご教授お願いいたします。

  • setTimeout関数の読み込みとfirefox

    教えてください。 setTimeout関数を使って、5秒後に指定の文字が出てくるようにしたいと考えています。 下記がソースです。 てすと という文字が5秒後に 本日の一押し情報 に変わるjavascriptです。 てすと <script type="text/javascript"> <!-- setTimeout(function(){ document.write("本日の一押し情報\n") }, 5000); // --> </script> テストしてみると、 「5秒経つと てすと という文字が 本日の一押し情報に変更されます」 ここまでは問題ありません。 しかし、ブラウザによって読み込み後の動きが異なることが分かりました。 IE、safari、googlecrome で見ると、ちゃんと読み完了となるのですが、 firefoxで読ませると、タブ左側の「読み込み中」マークが動きっぱなし となり、完全に読みこんでいない状態が延々続きます。 setTimeout の読み込み完了の宣言が必要なのかもしれませんが、 調べた限り、よくわかりません どこが悪いのかご教授頂けますようお願い致します。 firefoxだけ変な動きをすることを下記でご確認ください。 http://www.perlabonairiano.com/framepage23600.html

  • Java Script 自動ジャンプ

    Java Scriptで自動ジャンプで別ウインドウに出したいのですができません。 只今下記でやってるんですけど、これだと、親ページまでどっかに飛ぼうとするので、すごく困っています。助けてください。 <SCRIPT LANGUAGE="JavaScript"> <!-- function autoLink(){ location.href=window.open"リンク先"; } setTimeout("autoLink()",3000);// --> </SCRIPT>

  • Java Scriptなんでできないんですか?

    Java Scriptで自動ジャンプで別ウインドウに出したいのですができません。 只今下記でやってるんですけど、これだと、親ページまでどっかに飛ぼうとするので、すごく困っています。助けてください。 <SCRIPT LANGUAGE="JavaScript"> <!-- function autoLink(){ location.href=window.open"リンク先"; } setTimeout("autoLink()",3000);// --> </SCRIPT>

  • setTimeout の動作不良?

    setTimeout の中で引用する関数が引用するカッコの中に 引用符で文字列を入れると正常に作動しますが 変数名を入れると、動作が停止してしまうようです。 Win 7 pro 上で、Firefox 、 IE11 の両方で試しましたが どちらも動きませんでした。 おそらく、setTimeout のバグではないかと個人的に考えていますが どのようにして、この問題を解決可能かを 教えて下さい。 <script> function TestA() { setTimeout( "alert('Hello')", 2000) ; } function TestQuote() { var stringQ = 'Hello' setTimeout( "alert(stringQ)", 2000) ; } function TestNoQuote() { var stringQ = 'Hello' setTimeout( alert(stringQ), 2000) ; } </script> </head> <body> <button onclick="TestA()" > Timer 1 </button> <button onclick="TestQuote()" > Timer 2 </button> <button onclick="TestNoQuote()" > Timer 3 </button>

  • Window.open でフレームに表示

    JAVAを使い、指定のフレームに新しい画面を表示したいのですが、要領が良く判りません。 以下のように _blank で新しいウィンドウを開くのはできます。どなたか ご指導 お願いします。 <TITLE></TITLE> <SCRIPT language="JavaScript"> function new_window(url) { window.open(url, '_blank'); } </SCRIPT> </HEAD> <BODY onload="new_window('comp-page1.htm');">

    • ベストアンサー
    • Java

専門家に質問してみよう