我已经尝试了所有我能找到的建议,包括这个问题的答案,但没有一个奏效。Kau-Boy 对这个问题的回答对我不起作用(因为它注释掉了元标记和第二个代码脚本块的大部分内容,然后 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 被禁用,它所看到的只是它忽略的两个脚本元素和未被干扰的元元素,因此它会重定向。
注意:如果您使用 application/xhtml+xml 内容类型提供页面(如果文档是 xhtml,我想您可能应该这样做),这将破坏浏览器中的 js,因为通常会禁用 write 方法.