2013-02-09 281 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