仅支持启用了Javascript的用户

时间:2009-04-11 14:56:54

标签: c# asp.net javascript

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

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

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

6 个答案:

答案 0 :(得分:20)

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

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

从个人经验来看,我认为现在大多数互联网用户都支持JS。可能与JS重型网站有问题的用户部分是基于移动设备的用户,因此除非您需要联系他们,否则可能不是一个大问题。

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

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

答案 1 :(得分:6)

请参阅:

至于验证,您应始终执行服务器端验证,永远依赖客户端验证。你只是要求被黑客入侵。

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

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

答案 2 :(得分:4)

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

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

答案 3 :(得分:2)

现在,唯一不使用JS的人通常是:

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

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

<script type="text/javascript">
    window.location="/hasJs.aspx";
</script>

将它们重定向到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") ) { %>
    <script type="text/javascript">
         window.location="/hasJs.aspx";
    </script>
    This site requires JavaScript.
<% } %>

答案 4 :(得分:0)

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

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

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

答案 5 :(得分:0)

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

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

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