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

时间:2013-02-09 16:19:51

标签: javascript html meta-tags meta

meta http-equiv="refresh"内有<head>

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

使用 Javascript ,我正在尝试更改此content代码的meta属性。

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

当我通过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>

2 个答案:

答案 0 :(得分:5)

这是因为浏览器出现onload时会立即处理<meta>标记。

请参阅DEMO

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

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

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

尝试opposite,看看会发生什么。

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

答案 1 :(得分:1)

getElementsByTagName方法返回NodeList,因此您需要指定索引才能正确访问该元素:

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

正如有人提到的那样,这可能仍然无效,因为meta标签需要重新附加才能产生预期的效果。

由于您使用的是JavaScript,因此可以使用setTimeout来实现相同的行为

setTimeout(function() {
    location.reload();
},2000); // reload page after 2 seconds