javascript知识点收藏

 更新时间:2007年02月22日 00:00:00   作者:  
1.四种浏览器对 document.body 的 clientHeight、offsetHeight 和 scrollHeight 的解释。

这四种浏览器分别为IE(Internet Explorer)、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 的解释不同, xhtml 1 trasitional 中则不是如上解释的。其它浏览器则不存在此问题。


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

             IE               FF
Html       608/0          630/11096
Xhtml     10942/591    11076/630

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

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

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

判断浏览器的类型,这种写法挺喜欢的:
var ua = navigator.userAgent.toLowerCase ();
var os = new Object();
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)

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

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


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

相关文章

  • javascript实现playfair和hill密码算法

    javascript实现playfair和hill密码算法

    这篇文章主要介绍了javascript实现playfair和hill密码算法,需要的朋友可以参考下
    2014-12-12
  • js的匿名函数使用介绍

    js的匿名函数使用介绍

    匿名函数的作用是创建一块封闭区域,外面不能够访问里面的变量和方法,下面为大家介绍下什么是匿名函数及其如何使用
    2013-12-12
  • javascript unicode与GBK2312(中文)编码转换方法

    javascript unicode与GBK2312(中文)编码转换方法

    本文提供了一个javascript的unicode与GBK2312编码相互转换的方法,大家可以参考使用,实用的小实例
    2013-11-11
  • DOM基础教程之使用DOM

    DOM基础教程之使用DOM

    这篇文章主要介绍了DOM基础教程之使用DOM的相关资料,需要的朋友可以参考下
    2015-01-01
  • 深入了解js原型模式

    深入了解js原型模式

    在js中,创建对象的方式有工厂模式和构造函数模式等,但是,构造函数中的每个方法都需要在实例对象中重新创建一遍,不能复用,就需要使用原型模式来创建对象。下面我们来了解一下吧
    2019-05-05
  • 在浏览器窗口上添加遮罩层的方法

    在浏览器窗口上添加遮罩层的方法

    在web2.0中,页面弹窗是一个很常见的交互方式,这样既可以避免不必要的页面跳转,也可以改进界面的布局和可交互性
    2012-11-11
  • javascript中call()、apply()的区别

    javascript中call()、apply()的区别

    这篇文章主要介绍了javascript中call()、apply()的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 浅谈JavaScript编程语言的编码规范

    浅谈JavaScript编程语言的编码规范

    本文浅谈 JavaScript 编程中关于编码规范的问题,分析其中缘由。希望引起更多 Web 开发人员对 JavaScript 编码规范问题的关注和对软件产品质量问题的重视
    2011-10-10
  • Javascript Math ceil()、floor()、round()三个函数的区别

    Javascript Math ceil()、floor()、round()三个函数的区别

    Round是四舍五入的。。。Ceiling是向上取整。。float是向下取整
    2010-03-03
  • Javascript实现异步编程的过程

    Javascript实现异步编程的过程

    这篇内容详细分析了Javascript实现异步编程的过程以及原理解释,对此知识点有兴趣的朋友可以学习下。
    2018-06-06

最新评论