没有JavaScript,你的网页会是啥样?

开发 前端
尽管JavaScript是一门很简单的程序设计语言,但由于现在Web应用程序越来越多,JavaScript的地位也变得越来越重要。不过,在享受JavaScript和衍生的库的同时,你想过如果没有JavaScript,你现在的网页看起来是什么样子?

现在很多网站使用了JavaScript,它让交互响应更加灵敏,也增强了所谓的“用户体验”。尽管它是一门很简单的程序设计语言,但由于现在Web应用程序越来越多,JavaScript的地位也变得越来越重要。不过,在享受JavaScript和衍生的库的同时,你想过如果没有JavaScript,你现在的网页看起来是什么样子?

[[16959]]

我的博客使用了jQuery的一些功能,显然它是基于JavaScript的。我关掉了浏览器的JavaScript引擎,打开博客,幸好没有变形——广告无法显示,这不是我能控制的。

事例

“文章”菜单不能显示,因为我是通过jQuery注册hover事件实现弹出的;“回顶部”的按钮也无效了,当然这影响不大。

在完成应用JavaScript之前(或者之后?),我们应该思考一下如何聪明地使用JavaScript ,从而确保不会因为它的缘故使任何人无法访问你的网站。这就是非干扰性的JavaScript背后的核心理念。

为了更好地理解什么是非干扰性JavaScript 以及我们为什么需要它,我们先来看看在JavaScript 程序设计中会碰到哪些不确定性因素:

◆因为某些浏览器不支持JavaScript 或它们的支持的JavaScript 版本太老了,这些浏览器可能会完全忽略你的脚本;

◆即使一个浏览器可以支持JavaScript ,用户们也可能会出于安全性的考虑而禁用 JavaScript ,用户所在公司的防火墙也可能会通过移除所有的 <script> 标签来阻止 JavaScript 的运行;

◆即便一个浏览器支持JavaScript ,它也可能不理解DOM规范中的某些浏览器专有特性(IE经常被认为是这方面的祸首),这会导致该浏览器无法理解你的部分脚本;

◆即便是脚本能得到正确地解释,它也可能要依赖于非常复杂的HTML ,并且/或者依赖于可能以无法预测的方式被改变的HTML ;

◆就算JavaScript脚本运行在完美无误的HTML中,你也不能确定你的用户将会用什么类型的输入设备。许多脚本只有在用户使用鼠标时才会生效,而对那些使用键盘的人群则没有反应(许多残障用户无法使用鼠标,而且有的人偏偏喜欢用键盘);

◆即使你的脚本回避了上述的所有风险而且运行得很好,其他的程序员们也有可能读不懂它。

如果网页中的关键内容是由JavaScript控制的,一部分用户将不能正常的使用你的网站,或者丢失重要讯息。

如果某些内容由JavaScript控制,在 JavaScript 无法正常工作的时候,我的方法是通过 CSS 设定好样式,让他看起来是正常的。

这里有一个jQuery滑动导航条的例子(Demo1, Demo2),Demo1乍看之下是正常的,但如果关闭了JavaScript,所有的项目会挤到一团,因为所有的列表项都是绝对定位的,需要由JavaScript运行时动态确定高度;Demo2中只做出了简单的修正,使得它在JavaScript运行前保持相对定位,就能使它在没有 JavaScript的状况下表现正常。

这个例子尽管简单,但有时候我们就是为了方便(也是假定了JavaScript永远工作)让JavaScript参与重要元素的排版,这是要尽量避免的。

原文链接:http://beamnote.com/2010/without-javascript.html

【编辑推荐】

  1. JavaScript创始人Brendan Eich访谈录
  2. JavaScript已成Web之王?Java情绪稳定
  3. 前端之王能否续写辉煌 JavaScript服务器端开发现状 
责任编辑:王晓东 来源: 光线誌
相关推荐

2020-09-26 22:00:28

深度学习神经网络深度神经网络

2019-06-26 08:20:19

JavaScriptWeb开发

2020-12-31 11:17:30

笔记本锐龙AMD

2024-04-26 12:39:55

OLAP架构存储

2014-08-21 10:49:42

Win9微软

2023-01-09 11:54:13

物联网IOT

2017-09-07 14:04:00

2015-09-21 17:58:37

壁纸Ubuntulinux

2021-05-27 10:55:18

IEEdge浏览器

2013-11-29 10:17:49

5G4G网络融合

2021-12-27 13:59:20

区块链元宇宙技术

2022-10-10 11:32:01

数据分析技术

2021-01-15 15:51:33

JavaScript开发技术

2012-10-09 09:45:43

数据库实时大数据云计算

2009-12-24 15:36:09

Linux操作系统

2017-09-22 17:20:46

奥哲保温杯

2019-02-25 19:35:30

5G数字时代透明

2020-10-30 11:25:15

神经网络人工智能黑匣子

2014-11-05 10:08:50

2022-10-20 15:43:39

htmxDjango技术栈
点赞
收藏

51CTO技术栈公众号