2

我有一个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>
4

2 回答 2

5

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

演示

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

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

即使您尝试将其内容从 2 更改为 10,这 2 秒的刷新已经得到确认,并且浏览器在刷新页面之前等待 2 秒。JavaScript 注入的 10 秒刷新实际上有效*,尽管页面在达到 2 秒时已经刷新并且似乎没有任何反应。然后一次又一次地重复这个过程。

尝试相反的情况,看看会发生什么。

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

于 2013-02-12T14:11:45.620 回答
1

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

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

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

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

setTimeout(function() {
    location.reload();
},2000); // reload page after 2 seconds
于 2013-02-09T16:21:53.583 回答