javascript知识点收藏

时间:2021-05-26

1.四种浏览器对document.body的clientHeight、offsetHeight和scrollHeight的解释。

这四种浏览器分别为IE(InternetExplorer)、NS(Netscape)、Opera、FF(FireFox)。

clientHeight
大家对clientHeight都没有什么异议,都认为是内容可视区域的高度,也就是说页面浏览器中可以看到内容的这个区域的高度,一般是最后一个工具条以下到状态栏以上的这个区域,与页面内容无关。

offsetHeight
IE、Opera认为offsetHeight=clientHeight+滚动条+边框。
NS、FF认为offsetHeight是网页内容实际高度,可以小于clientHeight。

scrollHeight
IE、Opera认为scrollHeight是网页内容实际高度,可以小于clientHeight。
NS、FF认为scrollHeight是网页内容高度,不过最小值是clientHeight。

简单地说
clientHeight就是透过浏览器看内容的这个区域高度。
NS、FF认为offsetHeight和scrollHeight都是网页内容高度,只不过当网页内容高度小于等于clientHeight时,scrollHeight的值是clientHeight,而offsetHeight可以小于clientHeight。
IE、Opera认为offsetHeight是可视区域clientHeight滚动条加边框。scrollHeight则是网页内容实际高度。

同理
clientWidth、offsetWidth和scrollWidth的解释与上面相同,只是把高度换成宽度即可。

但是
FF在不同的DOCTYPE中对clientHeight的解释不同,xhtml1trasitional中则不是如上解释的。其它浏览器则不存在此问题。


2.JS取clientHeight与scrollTop
先来段数据,下表的值为document.body.clientHeight/document.documentElement.clientHeight

IEFF
Html608/0630/11096
Xhtml10942/59111076/630

在html/xhtml与ie/ff这4种排列组合下,取得的clientHeight几乎没有一样的,可见写一段兼容3种浏览器两种页面标准的js脚本有多头疼。

暂时总结的判断方法如下:
varh1=document.body.clientHeight;
varh2=document.documentElement.clientHeight;
varisXhtml=(h2<=h1&&h2!=0)?true:false;//判断当前页面的Doctype是否为Xhtml
varbody=isXhtml?document.documentElement:document.body;
alert(body.clientHeight);//最终结果比较一致

安全的取到scrollTop:
document.body.scrollTop+document.documentElement.scrollTop

判断浏览器的类型,这种写法挺喜欢的:
varua=navigator.userAgent.toLowerCase();
varos=newObject();
os.isFirefox=ua.indexOf("gecko")!=-1;
os.isOpera=ua.indexOf("opera")!=-1;
os.isIE=!os.isOpera&&ua.indexOf("msie")!=-1;


3.js取到flash对象方法汇总

IE,FF,Maxthon用document.getElementById(id)
Opera用document.embeds(id)

varisOpera=(window.opera&&navigator.userAgent.match(/opera/gi))?true:false;

if(isOpera){
varoswf=document.embeds('ad_flipper_swf');
}else{
varoswf=document.getElementById('ad_flipper_swf');
}


4.js执行顺序
1.同级的不同的代码块,代码块间的执行顺序为从上到下;
2.在代码中嵌入代码的情况下,先执行上层代码块,再执行子代码块;代码中嵌入代码
是指一个文件引入另一个文件,而不是指所有的通过document.write形式打出的代码。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章