仅支持启用了Javascript的用户
我正在考虑创建一个仅支持启用JavaScript的用户的网站。
我的理由是,我希望在相当有限的时间预算内提供丰富的用户体验,所以如果我只支持启用了JS的人,我就不必花时间确保UI在没有JS的情况下工作并创建服务器端等效validation等。
- 这可能吗? 不同的浏览器\平台阻止我实现这一目标吗?
- 这些天JS被禁用的用户比例是多少?
- 我如何检查是否在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更容易。