Changing the content of meta refresh does not change refreshing time

谁都会走 提交于 2019-11-29 12:12:58

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
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!