优雅地降级JavaScript有多重要?


88

Web开发人员是否应该继续努力用JavaScript逐步增强我们的Web应用程序,以确保功能正常降级,从而确保可访问性?还是我们应该花时间专注于新功能或其他开发领域?

该问题的潜台词是:有多少客户/客户/用户在禁用JavaScript的情况下使用我们的网站或应用程序?您是否有任何项目要求特别要求JavaScript功能(几乎是我的全部要求),并且这些要求还要求正常降级吗?

为了提出这个问题,我在未启用JavaScript的情况下调出了developers.stackexchange.com,并收到以下消息:“程序员-Stack Exchange在启用JavaScript的情况下效果最佳”。尽管该站点通常可以正常工作,但登录非常困难。(我无法投票解决任何问题。)

我认为这是令人满意的发展方法。想象一下,使网站的所有功能都可以与普通的旧HTML和服务器端逻辑一起使用时所付出的努力。另一方面,我想知道有多少用户被这种方法疏远了。

我们所有人(至少是我们当中优秀的开发人员)都经过培训,可以使用渐进式增强功能并确保我们的Web应用程序的动态功能正常降级。是这种渐进式增强只是随风而上,还是我们的某些客户实际上在未启用JavaScript的情况下真正利用了某些Web服务?


8
这不是您问题的答案,而是一个有趣的附加轶事:我在代理环境中从事Web开发工作已有4.5年了,在这段时间内,我为一个客户建立了一个网站,要求我们确保它在禁用JavaScript的情况下起作用-这是一个政府部门,希望W3C的Web内容可访问性指南的所有Priority 1检查点都得到满足(请参阅准则6.3-w3.org/TR/WAI-WEBCONTENT/#gl-new技术
Carson63000

5
我在启用NoScript的情况下浏览器,并且构建的所有内容都旨在在不使用JavaScript的情况下很好地降级。通常,这意味着删除完全依赖它们的内容或提供非AJAX后备功能。
乔什(Josh K)2010年

12
通过询问所建网站的人口统计信息,可以更好地满足您的目的。这是一个充满程序员的网站-精通技术的人。他们知道javascript是什么。以及如何将其关闭。他们知道如何访问禁用JavaScript的浏览器。恕我直言,说...的观众...银行家注定要禁用JavaScript的访问者会少得多。我想您需要相关数据来确定这一点。也许是从相关网站的Google Analytics(分析)数据中得出的。
rsman

1
有时,JavaScript允许您创建一些技巧,这些技巧通常是您不希望失去的安全性。例如,禁止漫游器在此线程上发布评论或答案。
约翰·K

3
我几乎以为移动Web开发不在乎?因为诺基亚和黑莓的浏览器非常糟糕,所以他们需要做出特殊的努力(与iPhone / Android不同)。
Matthieu M.

Answers:


52

我使用NoScript,但将我实际上打算使用的任何站点列入白名单。

安装NoScript时,默认情况下阻止 JavaScript,Java,Flash Silverlight和其他可能的可执行内容。您将能够允许的JavaScript /的Java / ... ...执行选择性,在网站上,您信任的人。如果您只是随机浏览或永久浏览,那么当您经常访问它并且您真的信任它时,可以允许该网站临时运行脚本。这意味着NoScript会从您自己的浏览器习惯中学习,并且往往会在一段时间后在后台消失,但是如果您偶然发现恶意网页,它会立即回来以节省您的时间。

当您浏览包含被阻止脚本的站点时,会显示一条类似于弹出窗口阻止程序发出的通知。
查看它或状态栏图标以了解当前的NoScript权限...

http://noscript.net/noscript/ss0.png


6
同样在这里; 网页必须有权在我的浏览器中运行脚本。我不想在从论坛或其他社区(例如stackexchange)的链接加载的每个页面上运行脚本,直到我更好地了解可以期望得到的内容。
PeterL 2010年

6
我同时运行NoScriptGhosteryAdBlock。我不同意@Peter。网站必须证明它们都需要JS,并且在我启用它之前值得我花时间。
meagar 2010年

23
呵呵..所以你已经增加了我的工作。为什么,为什么Ø人们为什么..;)
Roopesh谢诺伊

32
而瘸腿的,为什么不干脆回去使用Telnet ....
Darknight

34
-1 Downvote,OP询问它是否值得努力,您仅描述了如何浏览!
2010年

92

我猜没有打开JavaScript的人的比例可以忽略不计。但是要小心搜索引擎机器人!他们通常不使用JavaScript,但是您不希望他们因此而跳过一些重要内容,对吧?


14
我不能对此表示足够的赞同。您的网站不需要关闭javascript就能看起来不错,但是如果无法导航,您的搜索引擎排名将遭受某种程度的未知。
robertpateii

是的,所有内容都应该可以通过链接访问。+1。我想,这是渐进增强革命的核心。
斯蒂芬2010年


47

自从网络浏览器问世以来,我一直在启用JavaScript的情况下进行浏览。

我从来没有遇到过一个值得贬低我的浏览器体验的问题。也许有一些弹出窗口或其他烦人的地方,但我认为带来的好处远大于带来的风险。


4
我会说你很幸运。我的妻子和其他许多人曾经被《纽约时报》的广告咬伤。似乎他们租出了广告空间,而且并不是每个人都尽其所能阻止恶意软件。
David Thornley,2010年

22
好的。假设我偶尔会遭到一些恶意软件的攻击。我在计算机上启用了病毒防护功能,并且经常备份所有内容。我在计算生命中修复恶意软件造成的损害的总时间可能少于一周。我愿意承担这种风险,以便在使用互联网时获得更丰富的体验。我并不是说没有风险,只是对我来说这是可以接受的风险。
JohnFx 2010年

2
+1。我看到了一些带有恶意软件的横幅广告。我知道它们具有恶意软件,因为我的病毒扫描程序捕获了它们并且没有发生任何不良情况。我向网站管理员报告了广告,然后将其删除。
梅森惠勒2010年

2
@David Ad Block加上?免费且易于设置
TheLQ 2010年

2
@TheLQ:如果我关闭了活动元素,我发现广告不会打扰我,而且我已经看到广告支持的网站对使用AdBlock Plus的人的抱怨。我确实对人们在未经我特定许可的情况下在计算机上运行任意代码感到有些疑惑。
David Thornley,2010年

23

在Linux上使用控制台时,有时会在GUI不可用时使用Lynx。据我所知,lynx完全不支持JavaScript。

我还使用了较旧的移动浏览器,但对JavaScript的支持不佳。

但是,在这种情况下,我不希望从该站点获得完整的可用性。我通常只是使用Internet来快速查找内容(例如获取电话号码)。因此,我认为您网站的非JavaScript界面​​应仅限于被动引用角色。Stack Exchange是一个很好的例子,您可以查找答案,但不能投票。它只是用作参考。


是否值得花费额外的$ x千元,以及数天或数周的工作,以确保该网站能够在偶尔使用命令行浏览器的书呆子偶然访问该网站的情况下妥善降级?如果网站是关于如何使用命令行的话,说不定......
蚂蚁

@Ant,我同意这是否会花费数千美元或等价的工作时间,并且命令行用户,NoScript用户和较旧的移动浏览器都不太可能成为您网站的常规用户,那么使用JavaScript并没有错并且无法正常降级。尽管我认为在这种情况下仍然应该向非JavaScript用户显示警告。
亚当

17

当我不在家或不在办公室时,我会定期通过智能手机的网络浏览器浏览网络。尽管它支持JavaScript(至少是其中的一个子集),但并不总是能够很好地处理它。我发现许多网站无法使用,因为它们要么消耗了很多资源,要么只是崩溃了浏览器。

我更喜欢内置浏览器,但是我会保留两个备用浏览器,以防其中一个做得更好。


我认为这可能比人们在关闭javascript的情况下从台式机冲浪的问题更大。随着智能手机每天变得越来越强大,它可能很快就会消失。不幸的是,尽管我今天没有投票通过:P
BlackICE 2010年

3
@David:智能手机每天都在变得越来越强大,但是人们并不是每天都在购买它们……afaik,最合理的合同将您锁定在手机中了几年,然后您才可以花钱购买新手机。
史蒂文·埃弗斯

@SteveEvers Lol,在2015年末阅读此评论很有趣。
Viziionary

@Viziionary是的。:)
史蒂文·埃弗斯

13

如果您的脚本中断,会发生什么,这个线程中没有提到的一件事。在许多情况下,可能无法在页面上进一步执行脚本,因此需要一种回退到更简单的导航方式的方法。

脚本可能由于各种原因而中断,但最明显的是对.js文件的请求未完成,各种附加项可能会更改DOM(AdBlock等)或引入名称空间不正确的对象。

这与人们明确禁用脚本或其他无关。顺便说一句,许多现代路由器,防火墙软件等通常具有从网站禁用/过滤脚本,Flash等的功能,因此它甚至可能在网络层上进行配置,从而使用户不知道这一点(请考虑一下)。公共咖啡馆,学校或其他偏执狂已经配置了Internet访问权限的其他环境)。

通常,这是开发至少以网站的基本功能(布局和导航)正常降级的网站的主要论据。


多么好的观点。按照这些思路思考,您对此报价有何看法?程序员
斯蒂芬·2010年

我不知道这些情况会如何影响统计数据,但会假设大多数情况不会增加已明确禁用JavaScript的用户数量。我敢打赌,它们中的大多数都是基于在页面加载时调用的某些触发器,而当统计信息已经收集时,javascript可能会在运行时中断。
jishi 2010年

12

我禁用JavaScript的唯一一件事就是测试自己的网站。但是,您可能会对Yahoo所做的一项研究感兴趣,该研究发现1-2%的用户禁用了JavaScript。雅虎的受众可能是普通用户的一个很好的代表。

研究的关键语录:

尽管2%的美国游客似乎并不多,但请记住,超过3亿用户访问Yahoo!。每个月的首页。这意味着每月有600万用户访问而没有使用JavaScript。因此,尽管值得花时间在启用JavaScript的网站上,但仍然有大量用户无法使用它。


2
人们禁用它有什么大惊小怪的?我想念什么吗?
克里斯,2010年

9
那句话引人误解。它使用大量数字来吓you您。但是,无论样本集如何,百分比都是百分比。因此,如果一千个人实际使用我的服务,那么根据这些数字,其中有十或二十个将在未启用JavaScript的情况下显示。我认为为他们提供合理的体验而付出的努力是不值得的!真的很贵!我应该给那些人一个消息,说“您必须信任我并打开JavaScript”。
斯蒂芬2010年

7
@Stephen-这完全取决于您的受众和业务模式。如果您拥有像Yahoo这样的庞大受众群体,则1-2%可能意味着很多收入损失。对于较小的受众,渐进式开发的成本可能会超过收益的损失。另一个必然结果是IE6支持。我在即将进行的重新设计中删除了它,因为使用IE6的受众群体大致相同:1-2%。
VirtuosiMedia

2
赞成仅在该主题上建立一个及时的链接。
MIA 2010年

3
@Eiko或者,您可以开发该站点,以便其正确降级。你知道,有一些标准等等。
meagar


6

当然,您在这里得到的样本确实很偏斜,您可能最好在自己的网站上进行自己的研究。

我个人使用NoScript。我很少愿意将某个网站列入白名单,但是这样做确实值得我花点时间。(换句话说,我需要一个理由,但不一定要很有说服力。)


但是,如果您在自己的网站上进行自己的研究,则应记住,您很有可能会获得有偏见的样本。如果你的网站是没有JavaScript打破,那么事实是大多数用户的支持JavaScript不应该太多的惊喜,因为那些没有 JavaScript的早已切换到你的竞争对手...
约尔格W¯¯米塔格

确切地说,我记得曾经读过很多人错误地关闭了Javascript。显然,这对我们大多数人都不会发生。
DistantEcho 2010年

5

还是我们中的某些人实际上在未启用JavaScript的情况下利用了 某些 Web服务

是。

我的浏览分为三类。

正常浏览 -在Safari或Chrome(Mac OS X)上
-iGoogle,Stack Overflow和一些博客

特殊网站:-Firefox,
带有不必要的JavaScript的NoScript,AdBlock Plus和FlashBlock网站。(如果这很重要,那么一些印度网站会播放宝莱坞电影/音乐。不必要的繁琐脚本 -页面本身每隔5分钟就会重新加载一次)

移动浏览:
我曾经有过诺基亚5310。现在我有一台更老的索尼爱立信W700i。我在旅行时使用它进行浏览(Opera Mini很好)。这是(缺少)JavaScript的地方。我不想(主要)与网站互动,只需阅读即可。大部分站点仍然无法查看。


5

只需阅读实用程序员“ HTML5和CSS3”。作者说有5%的用户关闭了JavaScript。

这是他的出处:欧盟和美国JavaScript禁用索引编号+ Web Analytics数据收集的影响

JavaScript禁用索引号

欧盟:1.4%
美国:3.05%

资料来源:使用IndexTools跨多个行业网站进行的1.000.000.000访问。
(VisualRevenue.com/blog-Dennis R. Mortensen)

http://visualrevenue.com/media/uploaded_images/JavaScript-Disabled-735171.JPG

看来百分比也在下降。


2006-2007年的统计数据相关性如何?如果这些数据点的趋势沿线性路径继续,那么该数字在2013
。– Kristopher Johnson

@KristopherJohnson,这将在阈值之后停止线性化,这是常识。无关信息:世界人口的1%是7000万人。
Pacerier,2014年

4

我倾向于安装NoScript,并且仅安装我信任的白名单站点。否则,我会在需要时对特定域使用“暂时允许”。

这只是很好的安全性。否则,您将允许在计算机上运行任意数量的代码!即使是沙盒,也总是存在漏洞。

除了我自己的习惯之外,即使大多数人确实使用JavaScript浏览,开发具有渐进式增强功能的网站仍然很有用。如果您的网站在基线时可以正常运行,则可以为最大的受众群体提供服务。这也意味着您将数据与视觉设计和业务逻辑分开。无论如何,您在客户端使用JavaScript所做的大部分工作都应该在服务器端进行-客户端应该只是为站点用户提供了便利。

当然,有一些例外情况需要JavaScript,但通常会有一种期望。例如,人们期望为游戏BioLab Disaster启用JavaScript ,但对于像A List Apart这样的网站(大多数只是文本)都不能启用JavaScript 。

当我填写表格时,真的应该期望我启用了JavaScript来提交表格吗?为什么?这样JavaScript代码可以检查以确保我没有输入数字而不是字母?


就我个人而言,我从来没有在“真实的” Web浏览器中阅读过像A列表这样的网站(因为它只是文本):仅使用rss阅读器或通过instapaper,但我可以理解您的观点。
wildpeaks 2010年

1
此外,需要javascript提交表单的网站误解了渐进增强的概念,但我仍然认为,仅由于某人可能使用烦人的动画或某某原因而关闭js就像“由于某人可能使用某人而关闭图像”一个令人讨厌的图像”:您损失的多于收益。
wildpeaks 2010年

3

默认情况下,Windows Server上的Javascript被禁用。我们的IT策略阻止了这么多站点,读取某些内容的唯一方法是在默认情况下禁用JS的服务器上浏览。

尽管这不是我的首选配置,但这有时还是我要做的。


3

我使用Google Chrome + AdBlock Plus,并打开了JavaScript。

编辑:我现在使用NotScript。:)

Chrome ALONE几乎阻止了所有弹出式窗口(我只发现了一个闯过一次的网站[Chess.com]),而AdBlock摆脱了所有广告,因此我对此没有任何问题。

IMO,JavaScript为您提供了整体“更好的体验”,只要您访问值得信赖的网站(尚未被黑客入侵...),就可以了。作为“计算机专家” /开发人员,我相信我们应该有非常敏锐的“互联网意识”,并且能够判断一个站点是否是恶意的。


绝对没有可信赖的网站出售广告空间。纽约时报网站曾经感染了我妻子的计算机。诸如此类的网站会向广告经销商出售空间,因此无法保证尽职调查。
David Thornley,2010年

3

我认为,可访问性胜过几乎所有其他方面。依赖辅助技术的用户应该始终能够获得网站的大多数功能,即使可能需要更长的时间。有多少用户依赖它无关紧要。我很高兴为一个开放源代码Web项目编写代码,其中可访问性是主要重点之一,并且我实际上学习了如何使事情同时发生-使用和不使用JavaScript。(以及其他许多与可访问性相关的问题,因为是否使用JavaScript实际上只是问题的一小部分。)

有一个有趣的问卷,上面我提到的项目用户回答了他们在这里使用什么技术。您可能会感兴趣。


我认为您是在不同的上下文中描述可访问性。这里的讨论将是对所有用户禁用JavaScript 的影响,而不是对其中一部分用户的影响。
斯蒂芬

2

嗯,现在我感觉就像是欧米茄男人。:)显然,我是最后一个谁也确实可以打开的JavaScript(饼干)的人关闭。(除非我需要特定的站点,例如Stack Overflow。)

我怀疑我失去了很多-通常,当我打开JavaScript的网站,它的东西完全没用的,就像让我喷出万吨的个人信息提供给陌生人,或显示我一些移动广告-正是我想要的,当我试图集中精力阅读文章时,屏幕上会出现一些随机移动...


2

我刚刚在AskUbuntu.com上回答了一个问题-我不得不(暂时-目前)在网站上启用JavaScript。我使用NoScript并在我认为很明确的时候为网站启用JavaScript,但直到现在为止。默认情况下,对于我以前未访问过的网站,JavaScript是关闭的。


2

我做。一直使用NoScript。我将在对浏览器进行沙箱操作时退出,而不是在此之前退出。


很多现代的Internet安全套件沙盒主要浏览器。
2010年

在osX沙箱上是man -k沙箱,进入* .app查找可执行文件并将其更改为在沙箱中运行;)
chiggsy 2010年

2

人们一直在谈论这个决定,就好像它是二进制的一样。您要么优雅降级,要么不降级。相反,您为什么不考虑为每个功能优雅降级的成本与收益?例如,您可以确保该网站具有基本功能,但仍然需要Javascript才能使某人使用特定功能。

还请记住,许多禁用Javascript的人这样做是因为他们想使用仅包含基本要素的轻便,精简的网站。您可能会花费所有时间使钟声为那些特别想避免它们的用户服务。

人们抱怨要优雅地降级是很多工作。如果您抱怨它有多少工作量,那么您可能正在开发一项值得使用Javascript的功能。

我认为没有Javascript的用户应该总是能够浏览该网站,使用联系页面以及阅读您拥有的任何文章或博客文章。对于任何更复杂的功能,请根据工作与收益进行判断。


1
大。说得好。
斯蒂芬,

1

我只用它来浏览Pr0n(不好的邻居!);-)

我放弃尝试将其关闭以进行常规浏览,因为问题太多了。有时我什至不知道它坏了,直到我重新打开它。


1

如果您的网站可以供残疾人使用,则最好确保对JavaScript进行备份。


1

网站的策略和计划是针对具体情况的。也就是说,一个网站完全不需要支持IE浏览器,更不用说考虑诸如CSS3 边界半径之类的小问题了。但是其他网站甚至可能需要向后兼容IE6。

我们如何了解我们必须为网站计划的内容?部分是根据我们的经验。以程序员和开发人员为目标的网站可以确保其用户使用全新的,更新的浏览器,并且几乎打开了所有功能。但是,新闻网站应该认为,来自地球某个未知地点的人可以连接到他们的网站,以查看正在通过其国家/地区的内部消息。

但是,除了我们的经验和直觉之外,我们还需要在我们的网站上安装某种分析服务,以便基于统计数据,我们未来的决策将更加稳健。例如,谷歌分析是一个非常好的工具。从那里,您可以查看是否确实需要支持较旧的浏览器。

但是,如果我们要遵循W3C的Web Accessibility Guidelines,那么我们绝对应该支持很多事情,而无需考虑特定于站点的情况。

在你的特殊情况,我说没有。我们可以放心地忘记中小型网站中的无脚本。但是对于较大的项目,在页面中包含更多标记并不是一个坏主意。


0

我无法确定此线程上的某些答案是搞笑还是严肃:cookie比javascript更危险?大声笑

任何网站都应在js和cookie均关闭的情况下进行测试,但这是最低要求。



0

仅当客户明确要求时

除非您有大量用户受到影响,否则这只是额外的工作。


用户不会向您请求这些东西。他们会离开。
Pacerier,2014年

0

我一直都在使用JavaScript。我也总是有我的最低限度的恢复工具。

我们需要禁用JavaScript的否决权,因此我可以说“没有警报,没有重定向,没有网络套接字”。从控制台和各种检查器来看,至少该功能在WebKit中。

但是,是的,始终启用JavaScript。主要是因为很快人们就会使用Web套接字来破坏各种弊端,就像Flash获得“酷”虚拟机时发生的情况一样。然后,我将关闭JavaScript。如果他们让我当然可以。

我想尽可能多地享受美好。因此,我对这个时代有一些愉快的回忆。我想给我留下深刻的印象,也想对JavaScript的傻瓜感到高兴,因为我真的很想念我们在2007年所拥有的东西,自由的甜蜜信息流(如泉水)到处都是开源。

除非必须,否则我不会将其关闭。


0

从实时CD / DVD引导(物理上或在VM中)使我对允许Flash和JavaScript执行任务感觉更好。如果我没记错的话,Linux Mint开箱即用地支持Flash。

至于网站开发,我通常会在JavaScript中进行合理的div交换和菜单操作,但是我会尝试使所有内容看起来都正确,并且基本上可以与CSS一起使用。


-1

我不着眼于确保整个页面正常降级,而是尝试确保大约75%(或更多,如果容易或快速完成)的页面正常降级(或在没有JavaScript的情况下工作)。我还尝试确保这75%的人完成了页面功能的整个部分。

例如,我使用JavaScript为博客上的帖子加载评论。它使我在注释呈现方面具有灵活性,一致性,并且可以帮助我保持自我施加的单个查询/请求限制。但是,您进入我的博客(阅读帖子)的主要原因仍然是服务器生成的,并且可以在任何浏览器上使用。注释完全包含在一个干净的.js文件中。

TL; DR这里的关键是什么缓慢下降,没有多少地降级。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.