仅支持启用了Javascript的用户

我正在考虑创建一个仅支持启用JavaScript的用户的网站。

我的理由是,我希望在相当有限的时间预算内提供丰富的用户体验,所以如果我只支持启用了JS的人,我就不必花时间确保UI在没有JS的情况下工作并创建服务器端等效validation等。

  1. 这可能吗? 不同的浏览器\平台阻止我实现这一目标吗?
  2. 这些天JS被禁用的用户比例是多少?
  3. 我如何检查是否在C#中启用了JS。

你的理由很好。 但是,您必须在服务器端实现validation,否则只需禁用JavaScript即可轻松滥用您的代码。

不,如果没有JavaScript,提交任何数据“不可能”将无法解决问题。

根据个人经验,我认为现在大多数互联网用户都能使用JS。 可能与JS重型站点有问题的用户部分是基于移动的用户,因此除非您需要访问它们,否则它可能不应该是一个大问题。

使用单个重定向确定JS的最简单方法是使用JavaScript代码(document.cookie)设置cookie,然后使用前面提到的window.location重定向。 之后,服务器应该能够读取JS设置的cookie,假设它已启用。

此外,虽然使用C#等技术在服务器和客户端上自动共享validation规则和其他逻辑非常困难,但我建议您查看Aptana Jaxer。 Jaxer是一个基于JavaScript的服务器端框架,除其他外,它允许您在客户端和服务器上共享相同的JavaScript代码。 非常好,如果你想在客户端validation,但不想写两次validation规则!

看到:

  • 有多少人禁用了Javascript? (约1%);
  • 如何检测JavaScript是否被禁用? ; 和
  • 检测ASP.NET中禁用JavaScript的时间 。

至于validation,您应该始终进行服务器端validation,而不是依赖客户端validation。 你只是要求被黑客入侵。

如果您正在进行丰富的用户体验和/或您没有时间做两个(或更多)版本的网站来满足这么小的比例,我想我们已经达到了通常可以接受的时间。

但它确实取决于具体情况。 某些网站可能针对不成比例地禁用Javascript等的用途。

您错过了几个浏览器方案:

  • 更多人正在使用NoScript和类似系统,其中javascript最初被禁用。 这对你来说可能不是一个问题,因为大多数人只会在需要时将其打开。
  • Googlebot不知道javascript。 你需要确保内容足够好,没有javascript,谷歌可以正确索引它。

这些天,唯一不使用JS的人通常是:

  • 视力受损,并使用屏幕阅读器(JS的所有效果通常都会丢失)
  • 安全意识(或偏执?)和关闭NoScript浏览
  • 浏览器受限的移动用户

在ASP.NET或任何HTML站点中,使用:

 

这会将它们重定向到JavaScript用户的页面,这可能会设置cookie或您可以在母版页中检查的内容。 像这样(或类似):

(在hasJs.aspx中):

 protected void Page_Load(object sender, object e) { Response.Cookies.Add(new HttpCookie("hasJs", "yes")); Response.Redirect("/Default.aspx"); } 

(Site.master):

 <% if ( ! Request.Cookies.Contains("hasJs") ) { %>  This site requires JavaScript. <% } %> 

这当然是可能的,如果客户(如果你有的话)同意它没关系。 但你仍然需要在服务器端进行validation..否则一些脚本小子(即使它将在公司中使用)将破坏你的脚本甚至可能做你不想发生的事情。

http://www.w3schools.com/browsers/browsers_stats.asp

您将检查JS以检查JS是否已启用;)

请不要将此视为对您计划的批评。 需要Javascript的选择肯定是你的 – 尽管正如其他人提到的那样你可能需要关注可访问性问题。 但是,您可能会发现使用ASP.NET MVC而不是WebForms开发一个非Javascript友好的网站会更容易。

新的AjaxHelper扩展使得为大多数人包含依赖于AJAX的代码几乎是微不足道的,但是在客户端没有Javascript的情况下工作。 显然,对于没有它的人来说,体验会降低 – 更多的是,如果你使用jQuery插件来制作标签/菜单,弹出窗口等等 – 但它仍然可用。 该框架在服务器端提供了一个非常简单的机制来确定请求是否是AJAX请求,因此您可以通过呈现新视图或发送回适当的JSON / HTML / XML来做出相应的响应。

我知道我发现使用MVC编写可访问的网站比使用WebForms更容易。