2

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になりますが、タグは2metaごとに更新され続けます。

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

2 に答える 2

5

<meta>これは、タグがオンロードされている場合、ブラウザがタグをすぐに処理するために発生します。

デモを参照してください。

ドキュメントが読み込まれているとき、ブラウザは次のものを認識して処理します。

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

コンテンツを 2 から 10 に変更しようとしても、その 2 秒の更新は既に認識されており、ブラウザーはページを更新する前に 2 秒間待機します。JavaScript によって注入される 10 秒の更新は実際に機能します*が、2 秒に達するまでにページが更新され、何も起こらないように見えます。その後、このプロセスが何度も繰り返されます。

反対のことを試してみて、何が起こるか見てみましょう。

※これはSafariとChromeでのみ動作します。Firefox および Opera は、JavaScript によるメタ リフレッシュの変更をサポートしていません。

于 2013-02-12T14:11:45.620 に答える
1

このgetElementsByTagNameメソッドは を返すNodeListため、要素に正しくアクセスするにはインデックスを指定する必要があります。

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

誰かが述べたように、これはおそらくまだ機能しないでしょうmeta。目的の効果を得るにはタグを再度追加する必要があるからです。

JavaScriptを使用しているのでsetTimeout、同じ動作を実現するために使用できます

setTimeout(function() {
    location.reload();
},2000); // reload page after 2 seconds
于 2013-02-09T16:21:53.583 に答える