什么时候可以使用 Javascript,什么时候不可以?

Posted

技术标签:

【中文标题】什么时候可以使用 Javascript,什么时候不可以?【英文标题】:When is it OK to use Javascript and when not? 【发布时间】:2011-02-24 11:55:03 【问题描述】:

不使用太多 javascript/jquery 是一种好习惯吗?我们是否应该尽可能避免它(以获得良好的可访问性)?

什么时候可以使用 JavaScript,什么时候不可以在网页设计和开发中使用?在什么场景下,在什么条件下?

更新:

我问的是公共网站。

【问题讨论】:

这里已经有一些相当自以为是的答案,可能是近距离投票的原因。这似乎是一个有效的问题,但我建议将其作为社区 wiki 帖子,至少尝试避免进一步接近投票。 【参考方案1】:

我不得不恭敬地不同意那些说你不应该使用 JavaScript,或者谨慎使用它,或者让它优雅地降级的海报。

原因是现在绝大多数人都启用了 JavaScript,并欣赏它可以从网站提供的类似桌面的体验。真的,谁没有启用 JavaScript?人们表现得好像这是一个具有统计意义的群体。不是。

不使用 JavaScript 有点像挑剔可变大小(哦,我可以在这里使用 16 位整数而不是 32 位来节省一些内存)。除非你正在为成千上万的人做一些怪物项目,而你花在使网站优雅降级上的时间的投资回报率实际上是正的,否则你应该随心所欲地使用 JavaScript。因为禁用它而无法访问它的两个人是偏执狂,而且可能不是您想要的那种人作为客户。

只要我的 2 美分。

【讨论】:

阿门,+1。只要您向选择禁用 javascript 的用户显示明确的道歉信息,就可以很好依赖 JS(有一个很好的框架支持——jquery、dojo、google 关闭,...)为您的表示层。 这与有多少人禁用 Javascript 无关,而在于有多少人无法启用或完全使用它。网络正在越来越多样化的设备上使用,包括非常低端的小部件,这些小部件几乎只做原始文本和/或输入机制可能无法与鼠标悬停之类的东西配合使用。这可能是也可能不是很多人,具体取决于您网站的重点。 另外,请记住搜索引擎的蜘蛛在索引动态加载的内容时可能会出现问题。这是一个需要考虑的重要问题。请记住,网络首先是内容,然后是口哨和钟声。 搜索引擎的内容或原始文本仅对以内容为中心的网站很重要。网络应用程序可以完全不同地对待。 Alex,如果我们谈论的是 Web 应用程序,我会同意你的看法,但是对于基本网站,所有功能绝对必须优雅地降级。问题不在于那些愿意禁用 JavaScript 的人(这个人数可以忽略不计);问题在于使用不支持 JavaScript 的设备或浏览器的人。此外,你会惹恼那些使用 NoScript 的人。 :)【参考方案2】:

对专家先生所说的一切+1。

还要补充一点:网站的关键功能依赖于 JavaScript对可访问性有好处。如果 JS 在用户的浏览器中被禁用,他们应该仍然能够提交所有表单、单击所有按钮等。 您的网站必须在没有 JavaScript 的情况下优雅降级。

表格注意事项: 在可能的情况下,使用Hijax 方法提交表单。使用传统的页面刷新让它们工作,然后使用 JavaScript “劫持”表单提交并使用 AJAX 来代替。如果客户端禁用了 AJAX,表单仍然可以正常工作。

【讨论】:

【参考方案3】:

在我说什么之前,让我明确一点,所有这些都是相对的 - 都是关于您的目标受众。如果您的大多数目标受众是非洲的残疾人,而我的目标受众是韩国的游戏玩家,那么答案可能会完全相反。

首先,查看目标受众中启用 JS 与禁用 JS 的比例。对于一般的网站,它是 100:1。

其次,考虑带宽。 jQuery 缩小和压缩是 24K。但是所有浏览器都可以正常处理 gzip 压缩的内容吗?根据目标受众的带宽,选择正确的 UI 框架或选择是否使用其中一个。如果您的目标受众是拥有大量使用宽带计划的年轻人,那么如果框架大小为兆字节,他们就不会抱怨。但是,当您的网站针对某个国家/地区的偏远村庄进行救援工作或教育计划或其他事情时,请避免使用此类框架 - 他们几乎无法访问互联网。

第三,对于可访问性,有两点很重要:

    任何人都应该能够看到/听到/知道您网站中的内容。 任何人都应该能够执行您网站中的所有重要功能。

一旦您使用最小分母技术为您的目标受众处理了这些问题,您就可以随时使用 javascript 来美化事物并增强现有的基本功能(自动完成、AJAX 提交等......)

总而言之,优雅地降级。

抛开可访问性不谈,我不同意我们应该在有人禁用 JS 的情况下优雅地降级!

对于带有浏览器的桌面,说当人们没有启用 javascript 时,你的网站应该优雅降级就像是说 你的游戏引擎应该优雅地降级到 DirectX 6,因为有些人使用Windows 95。。没有意义了。请注意不再这个词。当 JavaScript 仅存在于 50% 的浏览器上并且它是一种新兴技术时,它曾经是有意义的。

谁有充分的理由说明我的 3D 游戏应该能够正常降级并使用 DirectX 6?它没有实际意义。有意义的是,我的游戏在 Windows 7 上使用 DirectX 11,但优雅地降级并在 Vista 中使用 DX10,甚至在 XP 中使用 DX9。

来吧.. 看看一些统计数据。 JS启用到禁用比例就像100:1

如果 80% 的观众在移动设备中使用一些即将推出的网络浏览器,并且 JS 实现不稳定,那么整个事情就会再次发生变化。

如果您的大多数目标受众/设备都启用了 JS,请好好使用它。如果他们没有,那就不要。你只需要给他们他们可以使用和看到的东西。

总会有少数人,但如果有先决条件才能看到一个网站并且它相当普遍,他们应该安装/启用它,否则对他们来说太糟糕了。您当然不希望目标受众有偏执狂。

一天结束时,只有您拥有可以帮助您决定应该使用多少 JavaScript 的信息。它始终由您的目标受众及其设备决定。

【讨论】:

【参考方案4】:

如果您正在开发一个简单的网站,那么您应该只使用 JavaScript 来增强用户体验,对于那些没有启用它的人来说,它应该优雅地降级。如果您的网站以内容为中心,那么您应该这样对待它:首先是内容,其次是基于 JavaScript 的花里胡哨。在没有启用 JavaScript 的情况下,不应有任何一项必需的功能无法工作。

然而,如果你正在制作一个网络应用程序,那就去疯狂吧。 Web 应用程序应该使用 JavaScript,因此迎合禁用 JavaScript 的人是没有意义的;如果他们真的想使用您的产品,他们将启用 JavaScript(或使用不同的设备)。在没有启用 JavaScript 的情况下让它工作是不值得的。这就像争论你不应该给你的视频游戏提供好的图形,因为低端计算机将无法运行它:真正想玩你的视频游戏的人会升级他们的机器。

【讨论】:

【参考方案5】:

mhr 的回答“总是,只要它优雅地降级”,是一个很好的基准。我要补充一点,在 Javascript 提供没有服务器端等效功能的应用程序功能(您的网站是“网络应用程序”而不是纯粹的信息)的情况下,可以做出合理的例外。因此,例如,“优雅降级”通常不应阻止您构建基于 Web 的绘图工具(如果它优雅地降级为表单和服务器端功能,这充其量是无法使用的繁重工具)。但是,它应该阻止您要求 Javascript 访问该绘图工具发布给内容创建者以外的观众的任何内容(因为内容创建者,不言而喻,已经接受使用该网站需要 Javascript )。

【讨论】:

【参考方案6】:

谨向 J. Nielsen 先生表示敬意:在进化和进步方面,设计中的保守主义可能真的毫无意义。当 flash 首次出现时(第一个版本的 actionscript,真正的外卖编程)提出了很多嘈杂的动画界面,其中大多数在可用性方面几乎无法操作。但事实是,从所有这些未来主义实验中,UI 方面已经出现了一些质的改进。

在 javascript 中也发生了类似的事情:单纯的小部件变得越来越流行,甚至超越了表示层来处理一些业务逻辑:RIA(富互联网应用程序)逐渐依赖 javascript 来提供用户体验。 用还是不用javascript?

我认为,在一个不断发展的全新世界中,每一种旨在提高可用性和交互性的工具都受到欢迎,而这对于有一个清晰的形状、方向或只是一个简单的计划来说太遥远了。

其他人在这里说的是完全正确的:不值得考虑仍然禁用 javascript 的一两个,因为游戏制作者不会太在意您的计算机是否发臭并且他们不断地拉扯图形的限制。多亏了这一点,我们不再玩 PACMAN(仅当 Google 愿意时),我们可以享受刺客信条。

【讨论】:

【参考方案7】:

NASA 是一个很好的例子,说明了如何在公共网站中不使用 JavaScript - 他们似乎使用 JS 来提供浏览器特定的样式表,从而导致 JS 被禁用的无样式混乱。

【讨论】:

【参考方案8】:

JavaScript 的主要用途是编写嵌入或包含在 html 页面中并与页面的文档对象模型 (DOM) 交互的函数。这种用法的一些简单示例是:

    通过编程控制新窗口的大小、位置和属性打开或弹出一个新窗口。

    验证 Web 表单输入值,以确保它们在提交到服务器之前被接受。

    在鼠标光标移动时更改图像:此效果通常用于将用户的注意力吸引到显示为图形元素的重要链接上。

因为 JavaScript 代码可以在用户的​​浏览器本地运行(而不是在远程服务器上),所以它可以快速响应用户操作,让应用程序感觉更灵敏。

【讨论】:

这看起来像是抄自 1996 年写的一篇文章,解释了在 Netscape 3 中实现的 JavaScript。 啊:它是从***抄来的。我很接近。【参考方案9】:

在公共网站上使用 JavaScript 是可以的,只要您的网站包含的信息仍然可用并且对于没有 JS 的人来说可用性仍然很好。

如果您处于公司内部网等更受控制的环境中,您可能会更多地依赖 JavaScript。

此外,如果您的网站更像是一个应用程序而不是一个文档,并且它的功能在没有 JS 的情况下是不可能的,那么您当然可以使用它。

您也可以接受这样一个事实,即有些人在使用您的网站时会遇到问题,但仍然严重依赖 JS。那是你的选择。

【讨论】:

【参考方案10】:

使用 javascript,我们可以与用户建立客户端/服务器关系,从某种意义上说,我们可以使用他们的 cpu 能力来构建页面并从我们的服务器中释放一些资源。我们交付代码和数据,他们的浏览器将它们放在一起,这就是它应该的样子。 :)

真诚的 巴巴克

【讨论】:

嗯?它是如何释放任何服务器资源的?! 嗨,当您不在服务器上创建任何 html 并且只是将数组传递给 javascript 并让浏览器执行所有循环和 if&else 时。【参考方案11】:

我不同意你的观点,即不要经常使用 java-script 和 jquery。 现在一天浏览器与javascript兼容。如果您必须开发一个需要验证的网站,您必须更喜欢javascript(用于客户端验证)。

【讨论】:

【参考方案12】:

您的网站应该优雅地降级,如果只是出于一个原因:NoScript。该 Firefox 扩展依赖于白名单以允许网站运行 Javascript。这意味着不允许我以前从未访问过的网站运行 Javascript。这是防止大量网络钓鱼攻击和跨站脚本 (XSS) 攻击的好方法。

网站必须首先赢得我的信任。是的,Ebay 和亚马逊可能严重依赖 Javascript,但像 www.buyviagracheap.com 这样的网站可能不会。

如果在禁用 Javascript 的情况下,您没有什么可显示的,我会在您说“但是...”之前快速按“返回”,并且永远不会回来。

但是,如果我喜欢我所看到的,我可以为您的网站启用 Javascript 并改善我的体验。因此,没有必要在禁用 Javascript 的情况下提供完整替代功能。

【讨论】:

以上是关于什么时候可以使用 Javascript,什么时候不可以?的主要内容,如果未能解决你的问题,请参考以下文章

什么时候使用闭包? [关闭]

什么时候*不*在内置插件上使用新作品? [复制]

我们在使用jQuery的时候,到底在使用什么?

javascript飞机大战-----007爆炸效果

什么时候404不是404?

异步 Javascript 执行是如何发生的?啥时候不使用return语句?