当我在FF 3.0中刷新下面的页面时,我希望网页能够清除,但事实并非如此。
为什么document.body.innerHTML = ""
没有清除页面?
更新 我正在尝试在新页面加载时刷新期间清除上一个屏幕。我实际上想看到页面清除,等待然后下一个js运行。页面加载后我不想清除屏幕。
...
<body>
<script type="text/javascript">
document.body.innerHTML = "";
for (var i = 0; i < 1000000000; i++) {
}
</script>
<img src="images/web.gif" /><br />
<script type="text/javascript">
document.write( "hello<br />");
</script>
<img src="images/warning.png" /><br />
</body>
答案 0 :(得分:43)
document.body.innerHTML = '';
确实清除body
,是的。但它会清除代码运行时的innerHTML
。当您在图像和脚本实际位于body
之前运行代码时,它会尝试清除body
,但没有什么可以清除的。
如果要清除body
,则必须在body
填充内容后运行代码。您可以通过将<script>
块作为body
的最后一个子进程来执行此操作,以便在代码运行之前加载所有内容,或者您必须使用某种方式来侦听dom:loaded
事件。
答案 1 :(得分:14)
要阐述Douwem的答案,请在脚本标记中将代码放入onload中:
<script type="text/javascript">
window.onload=function(){
document.body.innerHTML = "";
}
</script>
答案 2 :(得分:3)
虽然同意Douwe Maan和Erik的回答,但在这里还有其他一些你可能会觉得有用的东西。
首先,在您的head标签中,您可以引用一个单独的JavaScript文件,然后可以重复使用:
<script language="JavaScript" src="/common/common.js"></script>
其中common.js是名为common的顶级目录中的可重用函数文件。
其次,您可以使用setTimeout延迟脚本的操作,例如:
setTimeout(someFunction, 5000);
第二个参数以毫秒为单位。我提到这一点,因为您似乎试图延迟原始代码段中的某些内容。
答案 3 :(得分:0)
我不确定你想要实现什么,但是你可能想要考虑使用jQuery,它允许你将代码放在head标签或单独的脚本文件中,并且仍然在DOM之后执行代码装了。
然后您可以执行以下操作:
$(document).ready(function() {
$(document).remove();
});
以及有选择地删除元素(所有DIV,只有具有某些类别的DIV等)
答案 4 :(得分:0)
正如其他人所说,一个简单的解决方案是将脚本放在页面底部,因为所有DOM元素都是从上到下同步加载的。否则,我认为您正在寻找的是document.onload(() => {callback_body})
或window.onload(() => {callback_body})
,就像Erik所说的那样。如Douwe Maan所说,它们使您可以在触发dom:loaded
事件时执行脚本。不确定window.onload
的属性,但是document.onload
仅在加载所有元素,css和脚本之后才触发。就您而言:
<script type="text/javascript">
document.onload(() =>
document.body.innerHTML = "";
)
</script>
答案 5 :(得分:0)
使用document.body.innerHTML = '';
可行!只是说,如果使用HTML
(DOM
或在function
上),可以使用
document.writeln('');
,但只能使用onClick
或onDoubleClick
: )
答案 6 :(得分:-1)
我使用
功能清除我的屏幕var clear_body = function (){
var lista = document.body.childNodes;
for (var i = lista.length - 1; i >= 0 ;i--){
document.body.removeChild(lista[i])
}
}