网站是否真的需要迎合没有启用Javascript的浏览器?

为什么许多专业的Web开发人员总是坚持开发适合JavaScript禁用的浏览器的网站?

除了技术负责人和开发人员,大多数“正常”用户甚至不知道它是什么。

谁使用比Firefox 2或IE6更老的浏览器?

错误的问题。 这不是浏览器的年龄问题。 有很多新的浏览器不支持JavaScript或不支持它,他们可以一样重要的最新的Safari或Firefox。

其他人提到智能手机或l,,但我的书中主要是Googlebot 。 这是一个浏览器就像任何其他的,它不会运行你的大部分JavaScript。 另外,即使你有Firefox,你也可以使用NoScript之类的插件。 这与JavaScript禁用运行不同,但如果你做错了,你可以真正搞砸了这些用户(即,在会话开始或创build帐户时检测一次javascript状态,然后不再提供JavaScript即使他们想为你启用它)。 最后,如果您为美国政府做任何工作,法律要求您支持某些无障碍标准,包括禁用JavaScript。

几个月前,我在一个百万级会员网站上testing了用户数量,大约有10%的独立用户没有运行Javascript。

考虑颠倒这个问题:是否值得开发一个仅适用于支持Ajax的用户的站点? 你真的会忽略search机器人,大多数手机和一堆其他用户吗?

回归本源。 首先,在类似于REST的原则(至less要求POST请求进行状态更改)的范围内,使用裸机(X)HTML创build您的站点。 简单的语义标记,忘掉CSS和Javascript。

第一步是正确的,让你的整个网站(或尽可能多的有意义)适用于search漫游者和类似Lynx的用户代理。

然后添加一个视觉层:CSS /graphics/媒体的视觉波兰,但不显着改变你原来的(X)的HTML标记; 允许原始文本的网站保持完整和运作。 保持你的标记清洁!

三是添加一个行为层:Javascript(Ajax)。 提供让体验更快,更stream畅,更好用于支持Ajax的JS的用户/浏览器的东西……但仅限于那些用户。 没有Javascript的用户仍然欢迎; search机器人,视障人士,许多手机等也是如此。

这在网页devise界被称为渐进式增强 。 这样做,您的网站以合理的forms适用于所有人。

我认为这是一个众所周知的事实,大约10%的人closures了JavaScript,所以重要的是要考虑到这一点。 如果你觉得你可以安全地忽略掉10%的观众,那么吹掉它就没有问题。

许多面向文本的浏览器(如Lynx)被盲人terminal用户所使用,不支持JavaScript。 排除这些人访问网站是非常不礼貌的。

了解有关Web Accessibility Initiative的更多信息。

编辑:不要混淆文本浏览器山猫与graphics浏览器链接

手机将是我能想到的头等大事。 很多移动设备都不是很擅长通过一个JavaScript重的网站工作。 考虑到移动设备正迅速成为顶级互联网接入点之一,您可能需要重新考虑自己的位置..;)

这是一个更私人的宠物,但…

当网页使用AJAX调用加载其他页面时,我不太喜欢它,并且不提供在另一个选项卡中打开窗口的方法。 例如,在gmail上,如果您想在新窗口中打开您的草稿文件夹,您可以右键单击它并在新窗口中打开。 那里没问题。

另一方面,如果你想打开联系人窗口,那么没有非javascript的方法。 因此,您无法右键单击并select在新窗口中打开。 该选项不存在!

哇…我想我会成为第一个这么说的,但是……“和所有禁用JavaScript的人呆在一起。 如果您的网站需要运行JavaScript,请忘记所有closures它的用户。 认真。 如果你的网站真的足够好担心会失去大量的观众,那么人们开启JavaScript可能就够了。

例如,在JSclosures的情况下,转到Facebook,YouTube,谷歌文档,谷歌地图或Digg(嘿,试着做一些更酷的东西),看看你能做什么(不是很多)。

网页浏览器正变成一个基于云的操作系统,而不是“网站”的入口。 有很多令人信服的理由允许JavaScript运行,而IMO则有这么几个理由不会。 对我来说,closuresJS就像在Windows Vista中启用UAC一样。 是啊…它有助于防止你犯错误,但是让它变得很烦人(但是相反的逻辑… :-)。

所以,无论如何…我可能会为这个答案得到很多的答案,但我觉得我的理由是健全的,并备份了许多令人难以置信的成功的网站和Web应用程序。

只要确保你想要的索引的网页(和大多数其他蜘蛛)能够访问没有JavaScript的。

许多人因为像NoScript这样的插件的安全问题而禁用Javascript。

事情的一个简单的事实是,强制使用JavaScript会限制你的听众。 有一天,有人会尝试运行没有JavaScript的网站。 如果他们做不到,他们会打开它,或者心烦意乱离开。 如果他们离开,他们可能永远不会回来。

想想外面的PC …很多手机有不支持JavaScript的浏览器。 如果你想让你的网站看到你的网站,那么可能会付出代价来思考非JavaScript的体验对于这些客户端。

我每天禁用和重新启用JavaScript几次,具体取决于我要访问的网站。 例如,像popup窗口和调整我的窗口大小的新闻网站,仍然保持与我。

对于普通用户来说,了解这些东西是通过神秘的称为“JavaScript”的东西以及在浏览器中closures的东西来完成的。

值得担心一小部分人,还是争取最佳实践? 无论用户群是否受到影响,优秀的失败都是网站开发者应该投入的。 John Resig在雅虎“DOM杂乱”的讲话为适应所有浏览器和configuration的用户提供了一个很好的例子。

没有确定的是或否的答案; 这一切都取决于网站,以及如何使用JavaScript。

基本上,如果你的网站是由Google(或任何其他search引擎)编入索引,那么你会希望页面的内容只是简单的HTML,所以任何人都可以很容易地阅读它; 链接常规超链接,而不是一些“window.navigate”脚本,以便他们可以适当地跟随。 但是,如果您的“网站”实际上是一个更复杂的networking应用程序,那么如果您需要JavaScript支持,则可以为用户提供更好的体验; 在这种情况下,您也可能希望创build一个“移动”版本,以供不支持JavaScript的移动设备使用。

大多数情况下,需要JavaScript支持都是可以的,但是您仍然要记住可能禁用JavaScript或者不支持JavaScript的用户(和潜在用户)的百分比。

另外,例如,StackOverflow.com将JavaScript用于login时所做的事情,但不需要JavaScript支持就​​可以查看单个页面,或者链接到其他页面。

大多数用户不是技术性的,因此他们不知道/关心什么是JavaScript,所以如果它默认打开,那么他们使用。 所以,如果他们看到你的网站,而且不起作用,他们就不会回来。

通常的原因是:

  • 其良好的SEO实践,确保内容parsing和正确链接的search引擎
  • 一些现代的支持Web的电话不能正确处理客户端脚本
  • 508的合规性,除了帮助search引擎优化,在一定程度上是大多数政府项目所要求的
  • 有些人无论出于何种原因都closures了

一般规则是提供增强的function,但对于那些不能使用增强function集的用户会优雅地降级。 这意味着所有的导航应该可以在没有脚本的情况下进行访问,以及search引擎parsing的所有内容。

想想SO。 问题和答案在服务器端处理并发送到浏览器。 直到最近,通过JavaScript将需求检索到Web服务调用。 这意味着无论评论有多棒,都不会被search引擎parsing。

认为手机,而不是人们打开或closuresJS。 有数百万人在手机上浏览网页(当然不是)。 这就是为了迎合非JS用户的原因。

比IE6老? 几个百分点。 比Firefox 2还旧? 差不多。

你应该总是预期closuresJavascript的人,并容纳那些开启了Javascript的人。

对我而言,这看起来更像是产品经理做出的一个决定 – 由PM来决定产品的外观以及目标受众是什么。 作为开发人员,我所需要的只是要求“应该在每个浏览器中工作”或“应该在大多数浏览器中工作”。 这不应该来自networking开发人员,除非他决定你的产品应该是什么样子,这使他下午。 这不是开玩笑的争论。

使用您的SaaS并为此付费的公司是一回事 – 在一个项目中,我们明确表示只支持IE 6-7,客户也可以。 移动浏览器上可能访问的网站是不同的故事。 但是在移动浏览器上,如果没有JS,那么可能还不够,您可能需要简化页面布局并减lessgraphics的使用。 如果你真的需要移动用户,你可以考虑制作两个版本的网站,function齐全的JS桌面,以及移动用户的简化版本。

当然,你不应该依赖于客户端JS的安全性。

通常我更喜欢在没有JS的情况下提供大部分function。 例如只读访问SO并不真的需要JS。 如果用户真的想发布问题,那么用户启用JS并不难。 没有JS的提交问题也并不困难,只是忘记了类似问题的自动加载。

某些事情可以在JS和服务器端完成,而且它通常还是一个产品特性,而不是技术决定。 例如投票在SO可以完成没有JS,但这将涉及页面重新加载 – 更多的挫折用户和更多的stream量。

我通常不会将JavaScriptclosures,但我一定会让他们知道,因为他们已closures,某些function将无法使用。

我认为如果没有JavaScript,那么“破坏”你的网站是不可接受的,但是可以接受的是,要有最低限度的标准来使用你的网站。

对于我的网站这个作品…你的观众可能有不同的需求。

默认情况下禁用所有脚本,只为他们需要的站点启用,至less对任何互联网用户都是推荐的做法。 我甚至会说,这是鲁莽和不小心的。 有一些很好的插件可以select性地为选定的网站提供脚本。

这意味着你必须假设你的网站第一次访问者将不允许在他们的浏览器中使用任何脚本 。 因此,您的网站应该能够提供一个有用的界面来收集信息,而不需要用户允许脚本

在我看来,JavaScript只能用于提供超出简单显示信息的附加function。

我的行为是这样的:当我偶然发现一个只显示“你需要启用JavaScript”的网站时,我立即重新评估了引导我到那里的兴趣。 在某些情况下,我会closures标签。