JavaScriptが行われたとき(停止してください)の場合は、ブラウザを 'harlassing'から停止するのですか。
-
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()
を呼び出す必要があります。
基本的には、これが起こる:
- ページは解析されています
- スクリプトが処理
- ページは「閉」(
document.close()
)
ステップ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>
.