【问题标题】:Require javascript - can this be enforced through a server-side language需要 javascript - 这可以通过服务器端语言强制执行吗
【发布时间】:2011-05-16 16:06:48
【问题描述】:

我已经使用 php/jQuery 等开发了一个 ajax 应用程序框架。我想“要求”用户启用 javascript 才能使用该应用程序(它们都是内部应用程序,因此我们能够规定兼容性)。

如何检测是否在服务器端启用了 javascript?请举个例子。

【问题讨论】:

  • 你不能,但你可以读取响应头来猜测服务器类型。

标签: php javascript cross-browser


【解决方案1】:

您无法检测到此服务器端,但是您可以使用<noscript> 标记在客户端显示消息,如下所示:

<noscript>
   <div class="alert">You need to enable JavaScript to use this site.</div>
</noscript>

&lt;noscript&gt; 标记出现在客户端出于某种原因未启用 JavaScript 时,因此使用它们向它们呈现消息、元素等……只需给它一些样式,你就可以开始了。

【讨论】:

  • @Elzo Valugi :这就是为什么他说你无法检测到这个服务器端,它可以是 PHP(或 ASP、JSP 等......)
  • @Chouchenos 那么 noscript 标签和解释与答案无关。
  • @Chouchenos:这些都不能让服务器知道客户端是否支持 JavaScript。
  • @Ignacio - 我的论点是没有必要,如果 JS 被禁用然后隐藏你的内容并显示你需要 JavaScript 支持的消息...如果你 可以 检测到它?
  • 我想做的不仅仅是显示警报。事实上,我想要一个登陆页面......附加一条消息不足以满足我的喜好。
【解决方案2】:

你不能。您需要在客户端上运行它,然后让它转到特定的 URL,或者通过 AJAX 联系服务器以通知它。

【讨论】:

    【解决方案3】:

    从来没有这样做过,但考虑一下这个 web 服务场景,减少荒谬:

    1. 假设 js 被禁用并打印非 js 内容
    2. 注册一个 ajax 请求以防 js 处于活动状态,这会将令牌传递给服务器监听器
    3. 如果侦听器在合理的时间范围内收到消息,则返回新内容并用它更改非 js 内容

    这样您就可以应对这两种情况。另一种方法是常规方法,从启用 js 的假设开始。顺便说一句,我猜大约 90% 的网络用户启用了 js,甚至更多。

    【讨论】:

    • 是的,我认为它现在已经超过 95%...但是很难获得关于这类事情的准确事实。我希望尽可能减少这些类型的风险。
    【解决方案4】:

    经过一些创造性的思考......我想我会采用这个解决方案 - 但我希望得到反馈。

    在页面加载时使用 JS 设置一个 cookie - 检测它是否在服务器端


    对我来说,这似乎是可行的,因为它超轻量级并且非常适合我的应用程序结构。偏离我的 ajax 调用结构的想法困扰着我。

    【讨论】:

    • 这需要来自客户端的额外回发,您真的需要这样做才能显示“您需要 JavaScript”消息吗?....else 是您的当 JavaScript 被禁用时 PHP 正在做(或试图做)?
    • 但是如果客户端在 获取 cookie 之后禁用 JavaScript 怎么办?或者客户端禁用了 cookie 是什么?
    • @Nick - 我使用的系统使用多种 API 调用。我想这样做是为了帮助防止任何未经授权的呼叫。对我来说,要求 javascript 立即过滤掉任何有趣的东西是有意义的。
    • @Derek - 这样做对于避免未经授权的呼叫几乎没有作用......这并不能真正阻止事情。我可以在没有浏览器的情况下进行所有这些调用,更不用说 JavaScript...安全性在 IMO 并不是真正的问题,因为这并不能解决任何安全问题。
    • @Nick - 这个想法是,如果 cookie 不存在,api 框架会锁定。 JS 没有设置 cookie - 没有 API 框架。这不排除任何向我的框架提交数据的设备/方法,但不是兼容 javascript 的浏览器?
    【解决方案5】:

    只需在客户端执行此操作即可。如果有 javascript,它会重定向到好的站点,否则它会显示带有错误消息的简单 html 页面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多