Я перепробовал все предложения, которые смог найти для этого, включая ответы на этот вопрос, но ни один из них не сработал. Ответ Кау-Боя на этот вопрос у меня не сработал (так как он комментирует и метатег, и большую часть второго блока скрипта кода, затем 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 элемента сценария, один из которых - метатег внутри трюка комментария javascript, поэтому он не перенаправляется. Если javascript отключен, он видит только два элемента сценария, которые он игнорируети метаэлемент unmolested, поэтому он перенаправляет.
Примечание: если вы подаете свою страницу с типом контента application / xhtml + xml (что, вероятно, вам следует делать, если документ - xhtml), это сломает js в браузере, поскольку метод записи обычно отключается.