如何检测客户端是否已从Rails打开/关闭javascript?

时间:2010-09-08 19:04:12

标签: javascript ruby-on-rails request

我不想处理关闭javascript的用户,所以我想阻止他们使用我的应用程序。我想检测用户是否启用了javascript,因此我可以将它们重定向到一个告诉他们需要使用javascript的页面。我确定它在请求标题中。任何人都有任何想法我怎么能这样做?

6 个答案:

答案 0 :(得分:6)

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

<noscript>Get outta here.</noscript>

答案 1 :(得分:3)

你真的需要重定向吗?将邮件放在<noscript>元素中,它只会显示给它适用的那些。

答案 2 :(得分:3)

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

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

答案 3 :(得分:3)

无法在服务器端检测JavaScript。但是,您可以使用NOSCRIPT标记来显示指示您的网站需要JavaScript的消息。

例如,在浏览器中关闭JavaScript并加载Stack Overflow页面。页面顶部会显示一条令人讨厌的红色消息,警告您该网站在启用JavaScript时效果最佳。您可以检查Stack Overflow源代码和CSS样式,以了解它们是如何实现它的。

如果您确实希望阻止非JavaScript用户使用您的网站,您可以将邮件放在div标记内的noscript内,然后展开div以覆盖所有内容页面。

答案 4 :(得分:1)

你只需要html:

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

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

答案 5 :(得分:1)

您可以拥有一个登录页面,其中包含一段javascript,可以运行并重定向到真正的railsy登录页面,或者执行AJAXY调用以获取您想要向用户显示的数据。这肯定需要启用javascript才能继续。