`

Javascript使用上的几点考虑

阅读更多
来源:http://dingyu.me/blog/posts/view/when-no-javascript

其实Javascript的本意是增强客户端的用户体验,但如果使用不当,反倒会适得其反。比如以下几种情况:

滥用Ajax

最典型的,就是Chinaren的校友录。校友录目前的设计很奇怪:先载入HTML后,再使用Javascript把同学们的留言载入并填充到HTML里。我不清楚其用意何在,但每次打开留言页面都绝对不是一次愉快的体验,一是有时候因为网速的原因,等半天只能看到页面布局而不见留言内容,哪怕我这次来只想看看最新的两条留言也不行;二是如此大范围的DOM修改,再加上页面上原有的乱七八糟的元素,经常搞得Firefox响应变慢。

其实像这种页面完全没必要使用Ajax来载入并填充数据,传统的设计不是挺好?我记得2000年前后Chinaren的设计非常清爽,大面积的色块、线条,整个页面的布局显得井然有序,当时还是我学习和临摹的对象之一。现在的Chinaren臃肿不堪,甚至多次直接导致Firefox崩溃。这还是我启用了Flashblock扩展的情况下,现在我要考虑是不是用Greasemonkey重新设计这个页面了。指望用NoScript访问Chinaren?想都别想。

上图是2001年时Chinaren首页的截图,是从我的光盘备份中翻出来的,你注意到那些不同层次的灰色背景和黑色线条了吗?我当时觉得这样的视觉设计非常棒-现在看起来也仍然不错。

链接到网页还是脚本?

先说校内。

在校内上处理好友申请时,我喜欢批量操作。所以按照习惯,按住CTRL(Mac上按Command)然后在一个个"接受"按钮上点过去,以便分别打开新的页面处理每一个申请。可打开了一大堆页面后发现,这个"接受"按钮分明是链接到Javascript脚本的,这个脚本的作用就是在原有页面上展开一个对话框,来让我填写详细的好友信息。于是我现在所面对的情况就是:数个Firefox标签页,每页中不同好友的详细信息对话框,我在第一个标签页中接受好友申请,第二个标签页中此申请还在,而我则一边操作一遍抱怨为何早不告诉我可以在同一个页面上操作。

今天校内发布了新的设计-他们也意识到这个问题并改掉了。目前的设计很棒,"接受"不再是一个链接,而是一个真正的按钮(input标签),上述问题也就不存在了。

当然这个问题相当普遍,如果要对那些有问题的设计做出改进的话,校内的做法值得借鉴。

再说开心。

这个网站本身如何我就不评论了,反正我是被它的垃圾邮件烦得不行,索性注册并试用了一下。登录进去的10秒之内我就感觉非常不爽,因为它的导航链接完全使用了Javascript。我不能打开多个标签页同时查看它导航里的各个内容,通过滥用Javascript,开心网完全剥夺了我的这一权利。我仍旧无法理解把好端端的、标准的、简单的HTML链接替换为Javascript的意义何在。

可访问性(accessibility)一塌糊涂

Web Accessibility Initiative(WAI)对可访问性的定义是"残疾人也应能够使用网站(Web accessibility means that people with disabilities can use the Web)",其实这个定义本身是不够全面的,因为WAI自己也说可访问性也应包含对非残疾人的考虑,比如支持键盘操作以提升专家用户的使用效率等。

但目前的网站太过于依赖Javascript了,把Javascript一关,很多网站直接瘫痪。好的设计应该具有比较强的包容性,这有点类似于程序中的容错能力,无论CSS/Javascript是否开启,网站应至少提供最基本的功能,而不是直接使用户无法访问。
分享到:
评论

相关推荐

    JavaScript常用工具函数库汇总.docx

    深拷贝函数的实现需要考虑到以下几点: * 检查被克隆对象的类型,如果不是对象或数组,就直接返回。 * 使用递归的方式来实现深拷贝,遍历被克隆对象的所有属性,如果属性值是对象或数组,就递归调用 `deepClone` ...

    基于javascript实现文字无缝滚动效果_.docx

    基于javascript实现文字无缝滚动效果 概述: ...在实现基于javascript的文字无缝滚动效果时,我们需要考虑以上几个方面的知识点,并且需要根据实际情况进行修改和优化,以确保滚动效果的性能和安全性。

    北大青鸟ACCP 6.0 软件开发初级程序员:使用JavaScript增强交互效果.pdf

     ACCP6.0的课程相对于ACCP5.0增加了DB2关系型数据库系统,DB2具有很好的网络支持能力,每个子系统可以连接十几万个分布式用户,可同时激活上千个活动线程,对大型分布式应用系统尤为适用。DB2具有较好的可伸缩性,...

    HTML、CSS、JavaScript+网页特效、动画设计、交互式体验、视觉艺术+该代码用于创建一个有视觉特效和交互式体验的网页

    内容概要: 这段代码定义了一个包含标题、段落、...在实际使用这段代码时,开发者需要注意以下几点: 考虑到不同浏览器和设备的兼容性,进行充分的测试。 考虑到用户体验,确保动画效果不会过于干扰内容的阅读和理解。

    javascript文档

    javascript的官方文档 这些方便实用的信息将帮助您了解 JScript 的各个部分。 在“字母顺序的关键字列表”中,可以找到按字母顺序列出的所有 JScript 语言的主题。如果只需要查看某个主题(例如对象),则有对该主题...

    JavaScript绑定大事监听函数的通用方法_.docx

    本文主要介绍了 JavaScript 绑定大事监听函数的通用方法,讨论了几种常用的绑定方法,并且分析了这些方法的优缺。首先介绍了三种常用的绑定方法:传统绑定、W3C 绑定方法和 IE 绑定方法。然后,讨论了一个通用的、跨...

    前端面试,独有前端面试题详解,前端面试刷题必备,1000+前端面试真题,Html、Css、JavaScript、Vue

    事件会执行几次?先执行冒泡还是捕获? Day384:JavaScript 中如何实现一个类?怎么实例化这个类? Day383:说下 React 的 useEffect、useCallback、useMemo Day382:说一下 setTimeout 和 setInterval 的区别,包含...

    uni-app中markers中iconPath如何使用网络地址

    在 uni-app 中,iconPath 属性支持使用网络地址,但是需要注意以下几点: 首先,iconPath 属性需要以 'http://' 或 'https://' 开头,以便 uni-app 识别这是一个网络地址。 其次,iconPath 属性需要确保网络地址的...

    js-css-clock:该项目是使用CSS,CSS动画和JavaScript创建的时钟

    完成项目后,我解决了分针无法提前推进的问题,从而使秒针越过了12点就跳过了几秒钟。 分针也向后旋转90度。 我为此创建了一个修复程序,但是当我在Safari中对其进行检查时,我发现它在那里不起作用! 那是因为...

    JavaScript Table行定位效果

    要注意虽然ie的cloneNode参数是可选的(默认是false),但在ff是必须的,建议使用时都写上参数。 还要注意的是id属性也会被克隆,也就是克隆后会有两个相同id的元素(如果克隆对象有设置的话),这很容易会导致其他...

    微软JavaScript手册

    getUTCDay 方法 使用全球标准时间(UTC)返回 Date 对象的星期几的值。 getUTCFullYear 方法 使用全球标准时间(UTC)返回 Date 对象的年份。 getUTCHours 方法 使用全球标准时间(UTC)返回Date 对象的小时数。 ...

    android客户端连接远程服务器传递数据

    在 Android 客户端连接远程服务器传递数据时,需要注意以下几点: * 需要确保网络连接的稳定性和安全性,避免数据传递的中断和泄露。 * 需要选择合适的数据交换格式,例如 JSON、XML 等。 * 需要确保服务器的性能和...

    基于PHP公司主页的开发与应用 —毕业论文任务书

    JavaScript特效代码是指使用JavaScript语言编写的网页特效代码。该代码可以实现网页的一些动态效果,如动画、滑动菜单、悬停效果等。 知识点7:网页样式与布局 网页样式与布局是指使用CSS语言设计和实现网页的样式...

    毕业论文基于jsp的旅游网站前台模块设计实现.doc

    基于 JSP 的旅游网站前台模块设计实现需要考虑用户界面设计、业务逻辑实现、数据存储和管理、安全性考虑、可扩展性和可维护性等几个方面,并需要使用 JSP 技术、HTML、CSS 和 JavaScript 技术、数据库管理系统、安全...

    【JavaScript源代码】react项目从新建到部署的实现示例.docx

     react 脚手架初始化,社区比较火的有cra(create-react-app)和umi,从以下几点进行对比最终选择了比较贴合项目的umi。 最终考虑到一个项目需要快速搭建需要许多成型的插件支持所以采用了umi。antd真香!!!@...

    flexbuzz:Javascript FizzBu​​zz 算法的高性能实现

    FlexBuzz FlexBuzz 是 FizzBu​​zz 算法的高性能纯 Javascript 实现,应该考虑替代 fizzbuzz 包。 FlexBuzz 的最初开发是由赞助的。 非常感谢他们!用法使用运行 flexbuzz.js: $ node flexbuzz.js [limit]其中可选...

    js getBoundingClientRect使用方法详解.docx

    在使用 getBoundingClientRect 方法时,需要注意以下几点: 1. 该方法返回的属性值是相对于视口的,而不是相对于页面的左上角。因此,如果需要获取相对于整个网页左上角定位的属性值,需要加上当前的滚动位置。 2. ...

    10Pin_Bowling_Scorer:Makers Academy 的第 5 周挑战。 用 Javascript 编写的 10 针保龄球游戏的得分逻辑

    考虑以下几点: 保龄球游戏由 10 帧组成 在每一帧中,玩家可以投掷一两次,实际数量取决于罢工和备用 A Strike = 第一轮击倒所有 10 个销钉 备用 = 所有 10 个销钉在一个框架的两卷内都被击倒 一次击球的奖励是接...

    创建一个属于你自己的JavaScript库

    是否曾对Mootools的魔力感到惊奇?是否有想知道Dojo如何做到...是的,它非常有意思,但是在你高兴之前让我申明几点:1.这不会是全功能的库。我们有很多方法要写,但是它不是jQuery。我们将会做足工作来让你感受到在你

    怎样在网站上插入视频.docx

    在插入视频时需要注意以下几点: 1. 视频的格式需要与浏览器和平台兼容。 2. 视频的大小需要控制在合理的范围内,以免影响网页的加载速度。 3. 视频需要压缩以减少其大小。 4. 需要确保视频播放器或HTML5的video...

Global site tag (gtag.js) - Google Analytics