【问题标题】:Detect Javascript enabled on server side检测在服务器端启用的 Javascript
【发布时间】:2011-07-18 22:36:41
【问题描述】:

我已经看到了一些方法来检测是否启用了 javascript。我有一个独特的情况。 Global.asax 处理所有抛出的错误

protected void Application_Error(Object sender, EventArgs e)
{
  //email development team
}

最近,我遇到了一些人在他们的机器上禁用了 javascript。这些是公司机器,不允许他们这样做。我可以在母版页中添加一些 javascript 检测,但我不知道如何将其放入上面的“catch all”方法中。

如何检测此场景中的客户端是否启用了 javascript?

【问题讨论】:

  • 不要在服务器上这样做,在客户端上这样做。使用<noscript>
  • @Raynos - 如果访问者禁用了 javascript,我希望收到电子邮件。他们应该为此惹上麻烦。我不想添加友好的错误消息。使用<noscript> 实现这一点实用吗?
  • @P.Brain.Mackey 应该是 IE 用户设置系统管理员的东西。要检测它们,只需发送一条 ajax 消息说“javascript is on”,如果您在 n 秒内没有收到该消息,则给自己发送一封电子邮件。作为旁注,这是代码债务。重新设计您的网站,使其无需 javascript 即可运行。禁止用户关闭 javascript 是一项愚蠢的公司政策。
  • @Raynos - 好的,我明白你的意思。是的,这将是系统管理员的事情,但系统管理员要求我证明人们在这样做之前他们会花时间在上面。

标签: c# javascript asp.net


【解决方案1】:

您可以使用 javascript 在页面的 onload 事件中更改隐藏字段的值。

如果您在回发时获得新值,则启用 javascript

【讨论】:

    【解决方案2】:

    好吧,我认为您不需要针对特定​​任务进行常规 js 检测。我建议您添加一个<noscript> 标签,并将图像放入该标签。如果有人请求该图像,那么您可能想要执行您所说的错误逻辑。

    如果启用了脚本,我会尝试找到一些资源,以确保浏览器不会获取 <noscript> 标记内的内容。

    编辑 请参阅此previous stackoverflow post 了解更多信息。很直观,这一定是正确的,但是在这背后有多个意见是很好的。

    哦,我刚刚看到您正在使用 ajax + wait n seconds 方法。我强烈建议您不要这样做,因为您可能很容易得到误报 - 这可能会发生当用户快速导航离开被困页面或出现某种临时网络延迟时。

    虽然您不感兴趣,但这种方法还有优雅降级的额外好处。诱杀图像也可以向用户展示如何打开脚本。 :)

    【讨论】:

      【解决方案3】:

      这为您的需求提供了彻底的解释

      http://www.codeproject.com/KB/aspnet/JavaDetectService.aspx

      【讨论】:

      • +1 两个答案。这些很有帮助。我将使用 Raynos 解决方案并使用 AJAX 并在客户端上进行检测。 @Raynos 如果您将此作为答案发布,我会将其标记为这样。它满足我提出的所有要求,并且可能更易于维护。
      猜你喜欢
      • 2015-10-05
      • 1970-01-01
      • 2011-01-19
      • 2020-05-17
      • 1970-01-01
      • 1970-01-01
      • 2019-03-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多