gpt4 book ai didi

javascript - 当 Javascript 完成时,如何从 'hourglassing' 停止浏览器(stop throbber)?

转载 作者:行者123 更新时间:2023-11-29 15:50:35 25 4
gpt4 key购买 nike

我用一些非常简单的 Javascript 编写了一个小的 HTML 网页,我注意到在它完成之后,它一直在旋转 (firefox)。我在其他页面上看到过很多次,一直认为这是 Javascript 错误或循环问题,但我正在运行的这个程序肯定是完成了。

这是一个执行此操作的小网页示例。单击按钮并处理后,throbber(感谢 Kooilinc 提供的术语)继续运行。

<!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:这发生在 FF4.01 中,而不是在 IE 或 Chrome 中(对于此代码示例)。

注2:我试了switch语句后的window.stop()函数,并没有停止throbber。

根据 Lekensteyn 的回答,在 switch 语句之后的 document.close() 解决了这个问题,但这里有一个根本没有跳动并且不使用 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())

如果在步骤 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>

关于javascript - 当 Javascript 完成时,如何从 'hourglassing' 停止浏览器(stop throbber)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6067976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com