2010-09-08 128 views
3

我不想处理JavaScript关闭的用户,所以我想阻止他们使用我的应用程序。我想检测用户是否打开了javascript,因此我可以将它们重定向到一个页面,告诉他们他们需要使用javascript。我确定它在请求标题中。任何人有任何想法我可以做到这一点?如何检测客户端是否已从JavaScript打开/关闭Rails?

+4

我确定,它不在请求标题中。 ;) – Nappy 2010-09-08 19:09:27

+4

讽刺并不是很有帮助。不管怎么说,还是要谢谢你。 – DJTripleThreat 2010-09-08 19:21:34

回答

6

noscript标记是最简单的解决方案,虽然不完全符合您的要求。

<noscript>Get outta here.</noscript> 
+0

谢谢。你似乎只有一个人回答谁回答/询问Rails。 – DJTripleThreat 2010-09-08 19:20:36

3

你真的需要重定向吗?将消息放在<noscript>元素中,并且只会将其显示为适用的元素。

1

你只需要HTML:

<noscript><meta http-equiv="refresh" content="0;url=http://example.com/use_js.html" /></noscript> 

当然不会阻止服务器提供内容的这种,它只是将输出这个meta refresh标记,这将被解析(并执行,将用户重定向)通过没有JavaScript或JavaScript禁用的客户端。

+3

'noscript'不能位于文档的“头部”。 'meta'不能在文档的'body'中。它仍然适用于某些浏览器,但这种解决方案可能被某些人认为是无效的(比如所有知道的W3C验证器)。 – 2010-09-08 19:11:04

3

你不能。服务器不知道客户端启用了什么。如果客户端禁用Javascript,你甚至不能“检测”(因为你会用它来做什么?)。

当禁用Javascript时(例如,<noscript>标记或使用Javascript隐藏仅用于JS的内容),您可以使用技巧来显示内容。

3

没有办法检测到服务器端的JavaScript。但是,您可以使用NOSCRIPT标签显示一条消息,指出您的网站需要使用JavaScript。

例如,在浏览器中关闭JavaScript并加载Stack Overflow页面。整个页面顶部会有一个令人讨厌的红色信息,提醒您该网站在启用JavaScript的情况下效果最好。您可以检查堆栈溢出源代码和CSS样式以了解它们是如何实现的。

如果您确实想阻止非JavaScript用户使用您的网站,可以在noscript标记中放入div,并将div扩大以涵盖页面上的所有内容。

1

您可以拥有一个带有JavaScript代码段的登录页面,该页面运行并重定向到真正的railsy登录页面,或者执行AJAXY调用以获取要显示用户的数据。这将积极地要求javascript被启用继续。

相关问题