jquery源码学习技能点之浏览器特性
浏览器产品中最核心的技术之一莫过于排版引擎(或称为渲染引擎)。
不同的浏览器产品开发商在开发其产品时会采用不同的排版引擎。
早期的一些开发商开发出自己的排版引擎后,允许其他浏览器厂商在许可的
范围内直接使用排版引擎来开发出自己的产品。所以
目前市场上数百种浏览器按照排版引擎来分的话也就几种而已。
目浏览器根据其使用内核大概分为四种:(只讨论pc端的浏览器)
1)采用MS内核(Trident)的。常见如IE,遨游
2)采用webkit内核的。常见如safari,chrome
3)采用Gecko 内核的。常见如firefox
4)采用presto 内核的。只有一款opera
----------分割线------------------
对于前端开发来说,处理以上这四种浏览器还是会带来很烦人的问题。
问题之一就是处理浏览器跟w3c标准不统一的特性。为什么会有浏览器特性?
个中缘由不解释 。
本节内容主要收集一些DOM文档ready有关的一些知识。
onload事件:该事件的触发是在网页资源(页面上所有的DOM,样式表,脚本,
图片,flash等)全部加载完毕后。
DOMContentLoaded事件:它能在onload事件之前触发。它的触发条件一般情况
下是只要网页DOM准备好后。
dom的Ready跟我们平时那些开发有关呢?
比如常见的:
1.给一些元素绑定处理事件,但是如果代码写的不恰当,会造成文档元素还没加载
完毕,事件却已经执行完了,这样肯定是没有效果的。
2.还比如页面上的图片,flash虽然还没加载出来,但是其他的内容我们已经看到了
我们却不能做交互。常见的比如登录邮箱页面,邮箱地址和密码输入框已经
看到了,但是由于网页慢,该页面上的广告和动画还没加载出来,我们希望这时
可以进行信息的输入,我们才不管那些动画啥的好了没。
一般javaScript框架在处理不同浏览器的dom ready时涉及到以下知识点:
非IE内核中:
比如轮询document的readyState属性,
还有是否支持DOMContentLoaded事件。
IE内核中:
在IE内核中,doScroll函数必须在DOM加载完成后才能执行。
还有侦测doucument的onreadystatechange是否是complete。
当然上面的划分非IE内核啥的不太确切。现在IE内核也在进化。浏览器厂商越来越靠近
标准了。所以实际上框架中处理时,是不侦测浏览器类型的,只看你是否支持这个函数
或类似函数。
更具体的解释可以看下网上这几篇博客:
http://qingbob.com/blog/从onload和DOMContentLoaded谈起
http://www.cnblogs.com/rubylouvre/archive/2009/12/30/1635645.html
http://www.cnblogs.com/zhangziqiu/archive/2011/06/27/domready.html