最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Changing the content of meta refresh does not change refreshing time - Stack Overflow

programmeradmin5浏览0评论

I have a meta http-equiv="refresh" inside the <head>.

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

Using Javascript, I'm trying to change the content attribute of this meta tag.

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

When I display the content via document.write(myMeta.content);, I get the changed value which is 10, however, the meta tag will keep refreshing each 2 seconds.

I have tested this both in Firefox and Opera.

FULL PAGE

<!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>

I have a meta http-equiv="refresh" inside the <head>.

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

Using Javascript, I'm trying to change the content attribute of this meta tag.

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

When I display the content via document.write(myMeta.content);, I get the changed value which is 10, however, the meta tag will keep refreshing each 2 seconds.

I have tested this both in Firefox and Opera.

FULL PAGE

<!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>
Share Improve this question edited Feb 9, 2013 at 16:25 Ali Bassam asked Feb 9, 2013 at 16:19 Ali BassamAli Bassam 9,98924 gold badges70 silver badges119 bronze badges 3
  • 1 I think meta tags are "executed" only when loading the page. Adding / removing / changing them afterwards is ignored. – Teemu Commented Feb 9, 2013 at 16:29
  • The following page explains each of the 4 methods, Sets or returns.., however I don't know why refreshing time isn't changing, even though the content is changing. w3schools./jsref/dom_obj_meta.asp – Ali Bassam Commented Feb 9, 2013 at 16:34
  • It's easy to test, just remove the whole tag programmatically, and you'll find out, if your page will still have a timed refresh. – Teemu Commented Feb 9, 2013 at 16:40
Add a ment  | 

2 Answers 2

Reset to default 6

This happens because the browser immediately process the <meta> tag when it is present onload.

See DEMO.

When the document is being loaded, the browser sees and processes the following:

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

Even though you try to change its content from 2 to 10, that 2 second refresh is already acknowledged and the browser waits for 2 seconds before it refreshes the page. The 10-second refresh that is injected by JavaScript actually works*, although the page has been refreshed by the time it reaches 2 seconds and nothing seems to happen. This process is then repeated again and again.

Try the opposite and see what happens.

*This only works on Safari and Chrome. Firefox and Opera does not support the modification of meta refresh through JavaScript.

The getElementsByTagName method returns a NodeList so you need to specify an index to correctly access the element:

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

As someone mentioned this will probably still not work as the meta tag will need to be re-appended to have the desired effect.

Since you're using JavaScript you can just use setTimeout to achieve the same behavior

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

评论列表(0)

  1. 暂无评论