更改元刷新的内容不会改变刷新时间

我在<head>里有一个meta http-equiv="refresh"

<head>
     <meta name="mymeta" http-equiv="refresh" content="2" id="myMeta">
</head>

使用JavaScript ,我试图改变这个meta标记的content属性。

var myMeta = document.getElementById("myMeta");
myMeta.content="10";

当我通过document.write(myMeta.content);显示内容时document.write(myMeta.content); ,我得到的值是10 ,但是meta标签会每2秒钟刷新一次。

我已经在Firefox和Opera中测试了这一点。

完整页面

<!DOCTYPE html>
<html>
<head>
<meta name="mymeta" http-equiv="refresh" content="2" id="myMeta">
<script>
var myMeta=document.getElementById("myMeta");
myMeta.content="10";
document.write(myMeta.content);
</script>
</head>
<body>
</body>
</html>

发生这种情况是因为浏览器在出现onload时立即处理<meta>标签。

请参阅DEMO。

当文档被加载时,浏览器会看到并处理以下内容:

<meta name="mymeta" http-equiv="refresh" content="2" id="myMeta"/>

即使您尝试将其内容从2更改为10,该2秒刷新已被确认,并且浏览器在刷新页面之前等待2秒钟。 由JavaScript注入的10秒刷新实际上工作*,尽管页面在2秒内刷新并且没有任何事情发生。 然后这个过程一次又一次地重复。

试着相反,看看会发生什么。

*这只适用于Safari和Chrome。 Firefox和Opera不支持通过JavaScript修改元刷新。


getElementsByTagName方法返回一个NodeList因此您需要指定一个索引以正确访问该元素:

 var myMeta = document.getElementsByTagName("meta")[0];

正如有人提到,这可能仍然不起作用,因为meta标记需要重新附加以获得所需的效果。

既然你使用JavaScript,你可以使用setTimeout来实现相同的行为

setTimeout(function() {
    location.reload();
},2000); // reload page after 2 seconds
链接地址: http://www.djcxy.com/p/71667.html

上一篇: Changing the content of meta refresh does not change refreshing time

下一篇: What is the correct way to write HTML using Javascript?