易截截图软件、单文件、免安装、纯绿色、仅160KB

Javascript函数类型判断完美解决方案


Javascript函数类型判断完美解决方案
在判断函数类型时,我们通常使用typeof方法,一般情况下,它会得到我们所预想的效果。但是,有一些细节并不为我们所熟知。John Resig 在分析了这些细节之后,为我们提供了一个完美的解决方案,本文将作详细介绍:
一、传统方法不为人所知的细节
毫无疑问,在判断函数类型时,我们使用的是typeof方法,比如:
function fn(){
//content
}
alert(typeof fn)//结果是"function"。
但是,该方法在一些浏览器中并不是像我们想像的那样工作。
1、Firefox2和Firefox3
在这两个浏览器中,用typeof检测HTML对象元素的类型,得到是一个不精确的“function”结果,而不是“object”,如HTMLDocument。如:
alert(typeof HTMLDocument);
//在Firefox2中结果是"function";
//在Firefox3中结果是"object";
2、Firefox2
对于正则表达式,在该浏览器中返回的结果是“function”(在Firefox3中结果是“object”),如:
var reg = /test/;
alert(typeof reg);
//在Firefox2中结果是"function";
//在Firefox3中结果是"object";
注:本人在safari中测试,其结果也是“function”。
3、IE6和IE7
在IE中对DOM元素使用typeof方法,得到的结果是“object”。如:
alert(typeof document.getElementsByTagName("body")[0].getAttribute);
//结果是"object"
4、Safari 3
safari认为DOM元素的NodeList是一个函数,如:
alert(typeof document.body.childNodes);
//结果是"function"
很明显,如果你要测试一个对象是否为函数,使用typeof方法并不能从真正意义上保证测试结果。那么,我们就需要一种在所有浏览器中都能保证测试
结果的解决方案。我们知道function本身有apply()和call()两种方法,但这两个方法在IE中存在问题的函数中并不存在,试试下面的测
试:
alert(typeof document.getElementsByTagName("body")[0].getAttribute.call)
//在IE中结果是"undefined"
显然,我们不能利用这两个方法。
二、完美解决方案及实现过程
John Resig为我们提供了一个完美的解决方案,这个复杂但很稳定的判断一个对象是否为函数的方法如下:
function isFunction( fn ) {
return !!fn && !fn.nodeName && fn.constructo


相关文档:

使用Javascript,CSS和Ajax创建ASP.NET自定义控件

在Visual Studio中,所有的ASP.NET 2.0控件都是自定义控件,创建自己的自定义控件一般需要完成以下三步。
(1)在站点APP_Code下创建一个新类;
(2)修改这个类,让它成为WebControl类(包含在System.Web.UI.WebControls命名空间)的派生类;
(3)重写基类(即WebControl类)的RenderContents()方法。
下面是一个最简单的ASP.NE ......

完美的缩放图片的 javascript 代码。

在做网站的时候,我们经常需要对尺寸超标的图片进行缩放。
由于浏览器的差异,有些代码某些浏览器工作不正常。
经过研究得到了以下的代码,它可以在IE6,IE8,FireFox中完美地按比例缩放图片而不失真。
//改变图片大小
function resizepic(o)
{
var maxwidth=550;   //定义最大宽度
var maxheight=800;&nbs ......

Javascript时间差计算函数

JavaScript时间差计算函数
<mce:script language="javascript"><!--
Date.prototype.dateDiff = function(interval,objDate){
//若參數不足或 objDate 不是日期物件則回傳 undefined
if(arguments.length<2||objDate.constructor!=Date) return undefined;
......

ie的javascript语句失效修复方法

2007-01-20 01:01
ie的javascript失效了,不是设置的问题
折腾了一晚上终于在水木上找到答案了,经过试验成功了。感谢这位haning。也希望转载之后,这篇文章能帮助更多的人。
================================================
发信人: haning (柏寒宇), 信区: Virus
标  题: KAV6.0使javascript语句失效修复方法 ......

javascript中对中文进行编码解码的方式

中文编码:
 function upload() {
  var form = document.getElementById('topic');
  if ($('uploadfile').value == "") {
   alert("请选择文件!");
   return;
  } 
  $('uploadfile').value = escape($('uploadfile').value) ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号