2013-02-09 224 views
1

我有一个meta http-equiv="refresh"<head>更改元刷新的内容不会改变刷新时间

<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);的内容,我得到的改变后的值,它是10 ,然而,meta标签将不断刷新每个秒。

我已经在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> 
+1

我觉得'meta'标签只有在加载页面时才会“执行”。之后添加/删除/更改它们将被忽略。 – Teemu 2013-02-09 16:29:45

+0

下面的页面解释了4个方法中的每一个,**设置或返回.. **,但是我不知道为什么刷新时间不会改变,即使'内容'正在改变。 http://www.w3schools.com/jsref/dom_obj_meta.asp – 2013-02-09 16:34:20

+0

这很容易测试,只需以编程方式删除整个标签,并且您会发现,如果您的页面仍然有定时刷新。 – Teemu 2013-02-09 16:40:27

回答

3

这是因为浏览器立即处理<meta>标签时,它存在的onload。

请参阅DEMO

当正在加载的文件,浏览器看到和处理以下事项:

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

即使你试图改变其含量为2至10,即2第二刷新已经承认,浏览器等待刷新页面前2秒钟。由JavaScript注入的10秒刷新实际上工作*,尽管页面在2秒内刷新并且没有任何事情发生。然后这个过程一次又一次地重复。

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

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

0

getElementsByTagName方法返回一个NodeList所以你需要指定一个索引来正确地访问元素:

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

至于有人提到这将可能仍然无法正常工作因为meta标签需要重新添加以获得所需的效果。

由于您使用的JavaScript你可以用setTimeout来实现相同的行为

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

没错,但我仍然面临同样的问题,刷新时间不会改变。 – 2013-02-09 16:25:00