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>
答案 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