JavaScriptが行われたとき(停止してください)の場合は、ブラウザを 'harlassing'から停止するのですか。

StackOverflow https://stackoverflow.com/questions/6067976

  •  06-09-2020
  •  | 
  •  

質問

非常に単純なJavaScriptを持つ小さなHTML Webページを書く、私はそれが完了した後、それは円の回転(Firefox)に保たれたことに気づいた。私は他のページで何度も見たことがあり、常にJavaScriptのエラーまたはループの問題であると常に考えましたが、私が実行していたこのプログラムは間違いなくしました。

これを行う小さなWebページの一例です。ボタンとITプロセスをクリックした後、THROBBER(その用語のKooLincをありがとう)は進行し続けます。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <title>Grade Tester</title>
    <script language="javascript" type="text/javascript">       
      function calculate()
      {
       var grade = document.getElementById("grade").value.toUpperCase();        
        switch (grade)
        {
         case "A":
           document.write("Outstanding Achievement");
           break;

         case "B":
           document.write("Above Average");
           break;

         case "C":
           document.write("Average Achievement");
           break;

          case "D":
            document.write("Low Passing Grade");
           break;

         case "F":
           document.write("Failing Grade");
            break;
        }
      }
    </script>       
    </head>
  <body>
    Grade:<input type="text" id="grade" />
    <br /><input type="button" value="Get Result" onclick="calculate()" />
  </body>
</html>
.

私は停止を打つことによってそれを止めることができました(右クリックして停止)。

スクリプトが完了した後にJavaScriptを停止する(またはブラウザが処理を停止する)ために何をしなければならないのですか?

注1.これは、IEまたはChromeではなく、FF4.01で発生しました(このコードサンプルの場合)。

注2:switchステートメントの後にwindow.stop()関数を試してみましたが、THROBBERを停止しませんでした。

LekenSteynの回答に従って、switchステートメントの後のdocument.close()がこれを解決した後、これはすべてthrobを解決しなかった例であり、document.close()を使用しません。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <title>Lab 9.1</title>
  </head>
  <body>
    <script language="javascript" type="text/javascript">
      var phrase = "Every good boy does fine goes on the line."
      document.write(phrase.length + "<br />");
      for(var i = 0; i < phrase.length; i++)
      {
        document.write(phrase.charCodeAt(i) + " ");
      }
        document.write("<br />");
        document.write(phrase.toLowerCase() + "<br />");
        document.write(phrase.toUpperCase() + "<br />");
    </script>
  </body>
</html>
.

役に立ちましたか?

解決

document.write()を呼び出した後、その文書が以前に閉じられていなかった場合は、document.close()を呼び出す必要があります。

基本的には、これが起こる:

  1. ページは解析されています
  2. スクリプトが処理
  3. ページは「閉」(document.close()
  4. ステップ2内でdocument.write()が呼び出された場合、手順3で終了します。 ステップ3を超えて、document.writeを呼び出すと、もう一度ページが表示されていますが、そのページはFFで自分自身を閉じません(他の人についてはわかりません)。document.close()を呼び出して閉じる必要があります。

    ウィンドウを開いてFFで素早く書き込む必要がある場合にこれを発見しました。

    var win = window.open();
    win.document.write("something");
    // the next line is required to finish the page
    win.document.close();
    
    .

    あなたのケースにも同適用されます:

    <script type="text/javascript">
    function calculate()
    {
        var grade = document.getElementById("grade").value.toUpperCase();
        switch (grade)
        {
        case "A":
            document.write("Outstanding Achievement");
            break;
        // removed some cases
        case "F":
            document.write("Failing Grade");
            break;
        }
        // finish the document
        document.close();
    }
    </script>
    
    .

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top