如何阻止浏览器从';沙漏';Javascript完成时(停止跳动)?
在编写一个包含一些非常简单的Javascript的小HTML网页时,我注意到,在编写完成之后,它使循环不断旋转(firefox)。我在其他页面上看到过很多次,总是认为这是一个Javascript错误或循环问题,但我运行的这个程序肯定完成了 下面是一个小web页面的示例。单击按钮并进行处理后,throbber(感谢Kooilink提供的术语)将继续运行如何阻止浏览器从';沙漏';Javascript完成时(停止跳动)?,javascript,browser,throbber,Javascript,Browser,Throbber,在编写一个包含一些非常简单的Javascript的小HTML网页时,我注意到,在编写完成之后,它使循环不断旋转(firefox)。我在其他页面上看到过很多次,总是认为这是一个Javascript错误或循环问题,但我运行的这个程序肯定完成了 下面是一个小web页面的示例。单击按钮并进行处理后,throbber(感谢Kooilink提供的术语)将继续运行 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/
<!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>
等级测试仪
函数计算()
{
var grade=document.getElementById(“grade”).value.toUpperCase();
道岔(坡度)
{
案例“A”:
文件。书写(“杰出成就”);
打破
案例“B”:
书面记录(“高于平均水平”);
打破
案例“C”:
记录。书写(“平均成绩”);
打破
案例“D”:
书面记录(“低及格分数”);
打破
案例“F”:
文件。填写(“不合格等级”);
打破
}
}
等级:
我可以通过点击“停止”(右键单击并停止)来停止它
在脚本完成后,我必须做什么才能让Javascript停止处理(或让浏览器停止处理)
注1:这发生在FF4.01中,而不是IE或Chrome中(对于此代码示例)
注2:我在switch语句之后尝试了window.stop()函数,但它没有停止throbber
根据Lekensteyn的回答,switch语句之后的document.close()解决了这个问题,但这里有一个示例,它一点也不跳动,也不使用document.close()
实验9.1
var phrase=“每一个好男孩都做得很好。”
文件。书写(短语。长度+“
”);
对于(var i=0;i ”);
document.write(短语.toLowerCase()+“
”);
document.write(短语.toUpperCase()+“
”);
调用document.write()
后,如果以前未关闭文档,则必须调用document.close()
基本上,这种情况会发生:
document.close()
)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>
函数计算()
{
var grade=document.getElementById(“grade”).value.toUpperCase();
道岔(坡度)
{
案例“A”:
文件。书写(“杰出成就”);
打破
//删除了一些案例
案例“F”:
文件。填写(“不合格等级”);
打破
}
//完成文件
document.close();
}
document.close()
document.write()加载文档后执行会打开一个文档,因此write()后此文档需要close()。见我10小时前的评论。另外请看:如果您在开始时发布了代码,这个问题在2或3分钟后就解决了。好的,但我有其他使用document.write()的示例,它们没有document.close(),但仍然不会跳动(尽管在本例中它确实解决了问题)。在这些情况下,页面仍在加载,文档树尚未完成:document.write(“X”);函数f(){document.write(“Y”)}write Y
@LanceRoberts:该示例与我在上一篇评论中提供的代码类似,文档仍在加载中,整个文档(HTML,而不是像媒体一样的图像)尚未完全解析。@Lekensteyn,但我说的恰恰相反,第二个示例从不跳动,它只是停止而没有关闭()@Lekensteyn,所以这是一个时间问题,我只需要确保并关闭所有文档,因为它不是完全确定的。
<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>