この質問への回答を含め、これについて見つけることができるすべての提案を試しましたが、どれもうまくいきませんでした。この質問に対する Kau-Boy の回答はうまくいきませんでした (メタ タグと 2 番目のコード スクリプト ブロックのほとんどの両方がコメント アウトされているため');
、コメントが閉じられた後に解釈しようとする js が壊れます。つまり、次のようになります。
<script type="text/javascript">
document.write("<!-- ");
</script>
<!-- <meta http-equiv="Refresh" content="2;URL=js.html" /><script type="text/javascript"> document.write(' -->
<script type="text/javascript">
');
</script>
私はそれがしたことからインスピレーションを得て、うまくいくように思われる以下をまとめました:
<script type="text/javascript">
document.write('\x3Cscript type="text/javascript">/*');
</script>
<meta http-equiv="Refresh" content="0;URL=js.html" />
<script type="text/javascript">/**/</script>
基本的に、javascript が有効になっている場合、3 つのスクリプト要素を取得します。そのうちの 1 つは、javascript コメント内でだまされたメタ タグであるため、リダイレクトされません。JavaScriptが無効になっている場合、無視される2つのスクリプト要素と、邪魔されていないメタ要素しか見えないため、リダイレクトされます。
注: application/xhtml+xml コンテンツ タイプでページを提供する場合 (ドキュメントが xhtml の場合、おそらくこれを行う必要があります)、書き込みメソッドは通常無効になるため、ブラウザーで js が壊れます。 .