javascript不可用的问题探究

昨天在Twitter上的一些有趣的讨论中, 我发现人们对于Web应用和站点对javascript的依赖广泛存在一种疑惑. 这种疑惑一直都存在, 而对我而言, 这个问题随着浏览技术的飞跃发展而集中爆发了.javascript

我第一次遇到这个问题仍是在DHTML盛行的时代. 咱们对浏览器无所不用其极, 加上各类动画菜单、3D标签(咱们如今已经学会再也不使用这些了), 但总有人告诉咱们javascript不可用.html

谁禁用了javascript

第一个要问的问题是这些javascript不可用的环境在哪里. 下面是一些可能的答案:java

  • 安全系统好比noscript或者公司代理过滤掉了javascript;
  • 功能手机好比旧式黑莓(我还记得将旧式黑莓换到Opera Mini以得到总算还过得去的上网体验);
  • 在移动应用环境中, 图片和脚本有时候会被拆分处理;
  • 在流量有限或者接入很慢的区域中;
  • 人们由于我的缘由禁用了javascript;
  • 讨厌广告弹出等强势广告的人.

就像你所看到的那样, javascript被禁用的缘由多种多样, 有被动的, 也有主动的. 因此不能说只有乱用网络的人才会遭遇这样的问题.node

为何javascript会被禁用

像上面所列举的那样, javascript被禁用的缘由多种多样. 若是它是被有意禁用的, 那么我猜主要缘由无非如下三点, 即安全考虑、广告疲劳以及慢速链接.git

安全考虑在情理之中. 几乎每个在客户端的攻击都是使用的javascript(大多数情形下都是利用了插件的漏洞). Java固然是当前最大的安全漏洞, 可是经过javascript一样会对存在漏洞的网站或者不经保护或者过期的浏览器以及操做系统形成安全威胁.github

慢速链接是个颇有意思的缘由. 很是讽刺的是, 咱们使用javascript是为了加速客户端体验. 最初使用js的一个例子就是在客户端对表单进行验证从而避免服务器端没必要要的工做周期.web

若是你如今正处于一个不好的链接中(好比一个无线链接或者不好的3G链接), 你想要使用Google Reader或者Gmail, 你只能获得一个不完整的页面, 这时候只有使用低版本的才能更好工做.浏览器

为了两方都好

基于环境以及链接给用户最好的体验是很是好的. 这也是渐进加强(progressive enhancement)所研究的问题. 这也并不是是很高深的东西, 它很简单, 而且是处于彻底的实用主义.安全

使用事件受权这样的技术是很是简单的. 你能够经过点击父元素的handlers来写你本身的HTML, 使用innerHTML或者其余一些更新更快的技术.服务器

为何是这样一个问题

坦白说, 我也不太清楚. 或许是由于我太过期了, 或许是由于我已经一次有一次对浏览器和网络链接失望了, 或许是由于我只想更安全一些. 我只是不明白为何人们只想要js的解决方案呢, 而实际上, js只是用来提供一些加强功能的.

费解的应用边缘案例

人们时常怀有疑问的是"应用须要javascript". 若是咱们足够坦诚, 咱们就会发现, 这样的应用其实是不多的. 若是必定要说出一些, 我只能想到的是浏览器中的photoshop或者其余的一些编辑器(好比视频、浏览器中的IDE)才须要依赖于javascript. 其余均可以经过从新加载和服务器端的一些部件解决.

让咱们直面这样一个事实——在Node.js的时代, 服务器端也能够用javascript来写. Dav Glass of Yahoo两年前显示若是一个工具库编写成余环境独立的, 那么你就能够同时在客户端和服务器端复用这些工具.

"应用须要javascript"的真正缘由彷佛是其余缘由, 而非技术上的.

"应用须要javascript"的真正缘由

正如禁用javascript能够有不少缘由, 应用须要javascript也有不少缘由.

  • 你只知道js而且认为人们就应该升级他们的浏览器. 这无可厚非, 可是这样的见解是很狭隘的, 而且很容易失败.
  • 和你一块儿构建应用的团队没有服务器端的技能, 你但愿能以较低的代价完成这个应用. 这或许有效, 可是这样可能让开发时间和资金都加倍. 要提早为这样的开发作好规划.
  • 你想要尽快写出应用, 而且你知道之后你会重写这个应用的. 这是很常见的现象, 尤为是你能够所以而成功. 愿上天保佑你吧, 千万别让人知道你会待好久.
  • 你的应用会在一个纯js的环境中运行. 这固然意味着你不必不使用js而完成你的应用. 一个很好的例子就是Air applications. 但你要保证这个环境在未来不出问题.
  • 你的应用确实须要js来运行. 若是真是这样的状况, 就别将它提供给没有js的用户. 向人们解释为何以及如何作(尽可能避免告诉人们他们需须要开启js由于他们可能根本作不了而更加失望), 并利用js重定向到你的应用.

总结

总之, javascript依赖性的问题不仅是技术缘由. 它对旧的技术实践提出了疑问, 而且对于可维护性有很大影响.

能够说, 若是咱们能问问"咱们为何须要js"而不是问"人们为何没有js", 关于这个问题的讨论会更有成效. 若是咱们的技术能很好适应不一样需求的话, 去责备人们跟不上网络发展是毫无心义的.

经过展示给用户看他们能经过开启或者关闭浏览器中部件来解决问题一样是没有意义的. 当一个普通用户卡在你的应用中了, 这并非一个告诉用户发生了什么的作法.

或许全部这些问题在node变得成熟以及普及之后都不会再是问题. 我将很乐意看到这点.

原文连接:That "javascript not available" case

相关文章
相关标签/搜索