firefoxでsetTimeout関数の読み込みが異常な動きをする理由について教えてください。

このQ&Aのポイント
  • JavaScriptのsetTimeout関数を使用して、指定の時間後に文字列を変更する方法について質問です。
  • ソースコードの中で、5秒後に「本日の一押し情報」という文字列に変更する処理を行っています。
  • しかし、Firefoxでは読み込み中のマークが延々と表示されている状態が続き、正常に読み込まれません。なぜこのような動きになるのか教えてください。
回答を見る
  • ベストアンサー

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

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

  • ベストアンサー
noname#158634
noname#158634
回答No.1

>firefoxだけ変な動きをすることを下記でご確認ください。 いや、回答者にわざわざFirefox入れろとか駄目でしょ。 えーとですね…まずちゃんとしたHTMLを書いて試してからにしてくれませんか? そんないい加減なソースでは、どんな動作になっても誰にも文句は言えません。

tajix14
質問者

補足

厳しいご指摘ありがとうございます。 下記で自己解決致しました。 気づきを与えて頂きましてありがとうございました。 てすと <script type="text/javascript"> <!-- setTimeout('mes()',3000) function mes() { document.open(); document.write("本日の一押し情報\n"); document.close(); } // --> </script>

関連するQ&A

  • setTimeoutを使って・・・・。

    setTimeoutを使って、5秒後に下記の事を動作させたいのですが、 どうにしたら良いでしょうか? <script type="text/javascript"> loading_mes("テスト"); </script> ※ *.jsを読み込み、実行しながら上記のスクリプトに来たら 5秒後に「テスト」って文字を外部ファイルの処理にまわしたいんです 調べてみたものの記述方法が分らずじまいで(^^; 分る方が居ましたら どうかお願いします。

  • useless setTimeout cal 

    すみません。教えて下さい。 下のコードを書いて、動きはするんですが、実行後に 「useless setTimeout cal」というエラーが出てしまいます。 エラーを回避したいのですが、どうすればいいのでしょうか。 IE6/IE8/firefox3.6 などで試しました *********************************** <html> <head> <script type = 'text/javascript'> function item(){ var i = 0; write(); function write(){ document.write(i+"<br>"); i ++; if(i<10){setTimeout(write(),100);} } } </script> </head> <body> <script type = 'text/javascript'>item();</script> </body> <html> ***********************************

  • setTimeout()がうまくいきません

    以前、時計を一秒一秒、新しい絵を読み込んで バー表示型の時計を作ろうとしていた者ですが なんとか、1つの画像を連続表示させて 一本のバーにしていくスクリプトを 下記のように作りました そうしたところ、手動で更新をすると、うまく動作するのですが 自動で更新していこうと思いsetTimeout()を入れたのですが うまく動作してくれません。どのようにしたらよいのでしょうか <html> <head> <script language="JavaScript1.1"> <!-- function timesec() { var now = new Date() var s = now.getSeconds() var x = 60-s for(gj=0;gj<x;gj++) { var no = gj+1*x document.write("<img src='sec_1.gif' NAME='Name"+no+"'>") } } //--> </script> </head> <body> <script language="JavaScript1.1"> <!-- timesec() ----> </script> </body> </html>

  • 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関数が特殊(タイマースレッドもブロックする)なだけ、ということなのでしょうか? それとも私が何か見落としているのでしょうか。

  • setTimeout関数の使用方法について

    はじめまして。 質問があります。 以下のコードを実行すると、一定時間おきに文字の表示が変化する ように動いてくれません。何が問題なのかがまったく見当がつき ません。どなたかご指摘をお願いします。 ---------------------------------------------------------------- <html> <head> <title>setTimeout()関数の使用例</title> </head> <body onLoad="timer=setTimeout('changeChar()',500)"> <script type="text/javascript"> <!-- var str = "abcdefghijklmnopqrstuvwxyz0123456789"; var cnt = 0; function changeChar() { clearTimeout(timer); ch = str.charAt(cnt++); document.write(ch); if(str.length > cnt) { timer = setTimeout("changeChar()",500); } } //--> </script> </body> </html> ----------------------------------------------------------------

  • 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>

  • 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でタイマーを作る場合、ミリ秒はどのくらいまで有効なのでしょうか。 ひょっとして、マシンに依存するのでまちまちなのでしょうか。 経験等でご存じの方、お教えください。

  • setTimeoutを使用して文字を表示させたい

    おたずねします。 まだまだ初心者で、練習用に以下のようなプログラムを書いたのですが、うまく動きません。 やりたいことは「あいうえお」の文字を順番に、規定の時間(1秒ずつ表示時間を長くして)表示させるものです。 <script language="javascript"> mozi= new Array(); mozi[0]=("あ"); mozi[1]=("い"); mozi[2]=("う"); mozi[3]=("え"); mozi[4]=("お"); time= new Array(); time[0]=(1000); time[1]=(2000); time[2]=(3000); time[3]=(4000); time[4]=(5000); var menu=0; function aaa(){ document.write(mozi[menu]); timerID = setTimeout("aaa()",time[menu]); if(menu == mozi.length-1){ menu=0; }else{ menu++; } } </script> <body> <script language=javascript> <!-- aaa(); //--> </script> </body> どうしても「あ」→「い」のあとで動作がループのように固まってしまします。 このプログラムの順番がどのように動いて、 [menu]内の変数の増え方がどのようになっているのかが よくわからず困っています。 他にも別の記述方法はいろいろあると思うのですが、 できればこのプログラムを修正する形で御指摘いただきたいのですが。 どうぞよろしくお願いいたします。

  • javascriptの動作について

    こんばんは。 直接アドレス指定などしてきたものについては、 トップページへ飛ばすことをしようと思ったのですが、 以下の記述だと、IE8では動作しましたが、GoogleCrome(11.0.696.77)、firefox(3.6.0)、safari では動作しませんでした。(location.hrefがダメなんでしょうか?) 解決策・回避策などあれば教えてください。 よろしくお願いします。 <script language="JavaScript" type="text/JavaScript"> <!-- var url; url = document.referrer; if(url != 'http://xxxxxxxxx'/){ location.href('http://xxxxxxxxxxxxx'); } // --> </script>

  • FireFoxについて

    JavaScriptを勉強中のものです。 単純に、『テキストボックスの文字色を変えるだけ』のスクリプトを組んだのですが、 IEでは動いて、FireFoxでは動かない、という状況に陥っています。 ソースは下記のとおりです。 -------------------------------------------------------------------------------------------------------------------- <html> <head> <Script Language=JavaScript> function js_ClickBtn_Blue() { document.getElementsByName("txt1")(0).style.color = "blue"; } function js_ClickBtn_Red() { document.getElementsByName("txt1")(0).style.color = "red"; } </Script> </head> <body> <input type=text name=txt1 value="あいうえお"> <br> <br> <input type=button name=btn1 value="青" style='color:blue;' onClick='js_ClickBtn_Blue();'> <input type=button name=btn1 value="赤" style='color:red;' onClick='js_ClickBtn_Red();'> </body> </html> -------------------------------------------------------------------------------------------------------------------- なぜ、IEでは動いて、FireFoxでは動かないのでしょうか? 【知りたいこと】  ・FireFoxで動かない理由  ・FireFoxでテキストボックスの文字色をJavaScriptで変更するには   どういった実装をしたらよいか ちなみに環境は、 【パソコンのOS】Windows7 Enterprise 【ブラウザ】 Internet Explorer 8 FireFox 40.0.2 です。 知っている方いましたらご教授お願いします。 以上です。

専門家に質問してみよう