如果禁用javaScript,如何重定向?

zec*_*ude 29 javascript redirect

我有一个严重依赖javaScript的网站.我创建了一个镜像站点,它包含所有JS以及需要删除JS的所有元素.如果用户没有启用javaScript,那么将用户重定向到镜像站点的好方法是什么?

我试过这个,但看起来不太好:

<noscript>
  <meta http-equiv="refresh" content="0; URL=nojs/index.php">
</noscript>
Run Code Online (Sandbox Code Playgroud)

我也尝试将header-redirect放入noscript标签,但这不起作用.

Tyl*_*ter 78

<noscript>
    <p>This site is best viewed with Javascript. If you are unable to turn on Javascript, please use this <a href="http://sitewithoutjavascript.com">site</a>.</p>
</noscript>
Run Code Online (Sandbox Code Playgroud)

有些人故意禁用Javascript,你可能想让他们有机会在重定向之前打开它.

  • 我希望我能不止一次地赞成这一点. (2认同)

小智 49

使用我提出的代码:

<noscript>
  <style>html{display:none;}</style>
  <meta http-equiv="refresh" content="0.0;url=nojs/index.php">
</noscript>
Run Code Online (Sandbox Code Playgroud)

它使用样式来阻止页面上的内容,以便人们在重定向之前不会注意到任何内容.唯一令我烦恼的是我想要比元刷新更好的东西,因为在IE等浏览器上可以阻止它.PHP标头实际上不是一个解决方案,因为你不能将它放在noscript标签中,因为它会忽略它并立即将其写出来.


Mat*_*att 22

使该网站的无JavaScript版本成为默认版本.在那里包含一个小脚本以重定向到脚本站点.

或者,完全放弃使用重定向并使用渐进增强功能

  • ...因此重定向99%的访问者而不是1%.在语义上,我同意你的观点,但考虑到所有事情,我认为这不是一个好主意. (42认同)
  • 那么,在这种情况下,理想的解决方案是使用渐进增强而不是重定向. (5认同)
  • 客户端重定向很烦人,因为栏中显示的URL会发生变化.想象一下,如果你每次去google.com,它都会将你重定向到http://www.google.com/js/并且是的,有些网站会这样做,但我仍然认为这是不好的做法,不必要地放慢了客户端的速度经验. (4认同)
  • 我决定进行渐进式增强.这是一个更多的工作,但我看到它是如何更好.谢谢你的建议! (4认同)

Amy*_*y B 16

你对"不太好"的定义是什么?

我的所有网站都使用:

<noscript>
  <meta http-equiv="refresh" content="0; url=http://www.sadtrombone.com/" />
</noscript>
Run Code Online (Sandbox Code Playgroud)

  • `<meta>`仅在头部内有效,因为它修改了头部.`<noscript>`只在体内有效,因为它处理内容.因此,它们不可混合,并且可能无法在所有Web浏览器中按预期工作. (10认同)
  • @Mikael:1)严格按照W3C标准对HTML进行100%验证并不重要.2)它适用于所有主流浏览器. (9认同)
  • 这是有效的HTML5. (5认同)

Sas*_*sha 6

我不会做客户端重定向,因为这可能会让用户感到烦恼.相反,我要做的是用于<noscript>在同一页面上显示这个无JS站点的内容.这可能是更多的工作,但它肯定会是一个更顺畅的经验.