不知道ppk的网站QuirksMode,说明你可能还没有真正成为资深的JavaScript程序员。多年来,ppk的不懈努力,帮助了全世界无数Web开发人员。如今,他把自己深厚功力和精湛技艺浓缩在一本书中,强烈推荐。
----瑞典资深web专家
我决定拿起这本书,在我的前端开发道路中,继续前进。
JavaScript的目标是给Web页面增加一个额外的可用性层,JavaScirpt是一个客户端的程序设计语言。
胖与瘦
瘦客户端完全依赖客户端服务器的通信,一般来说,每次交互的逻辑都是由服务器发出指令的。当页面频繁更新的情况下,访问会变得很慢,影响用户体验。
胖客户端正好相反,它能够在客户端处理很多的交互。当用户发出一个动作,浏览器中的脚本决定下一步做什么。虽然客户端不能完全脱离和服务器的通信过程,但胖客户端仍然试图读取更多的数据,全由自己处理。
实现方式:
尽管胖客户端能够带来可用性的好处,从胖瘦模式之间两个根本的不均衡性来看,我认为最终瘦客户端更接近于JavaScript的标准方法。
第一个不均衡性是瘦客户端更能保持Web的结构。Web可以看作是文档的集合,而非用户界面的集合。
第二个不均衡性是可访问性。显然,从可访问性观点来看,瘦客户端更完美,因为他一般出现更少的错误。相反,胖客户端出错的可能性更大,因为有更大的功能出错的可能。
要想成为一个真正出色的JavaScript开发高手,那么至少应该创建一个胖客户端。
安全
为了保证Web用户的安全,使他们远离危险,又不侵犯隐私,JavaScript遵循严格的安全规范。它抵御恶意脚本的最重要的防线,就是完全不支持下列操作:
1、JavaScript不能读取或写入用户计算机的文件系统(cookie除外),因此JavaScript不能从用户的硬盘中读取密码文件或者向其写入病毒。
2、同源策略:两个窗口的页面的Web域名必须相同,才允许跨窗口通信。这个策略非常严格,具体后续分析。
3、JavaScript不能读历史对象的属性。尽管你可以让用户在浏览器历史中后退,但你不能知道他们退到了哪个页面。
4、JavaScript不能设置文件上传表单域的值。因此,恶意站点拥有者不能将其设置为密码文件的路径,然后自动提交表单来获得用户密码文件的副本。
5、如果你试图关闭用户打开的浏览器窗口,用户会被询问是否允许这个动作。但你可以不受限制的关闭由JavaScript打开的窗口。
6、大多数浏览器不允许你打开一个小于100x100像素的新窗口,也不可以打开处于屏幕可视范围之外的新窗口。此外,你也不能打开没有标题栏的新窗口。