易截截图软件、单文件、免安装、纯绿色、仅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


相关文档:

ie的javascript语句失效修复方法

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

javascript实现整个页面的背景颜色渐变

Link:http://topic.csdn.net/u/20100317/15/687e21bc-40f3-4f0e-bc22-5f2a32ceb1a3.html?seed=1664090183&r=63989333#r_63989333
<HTML>
<head>
<title>sample</title>
<mce:script language="JavaScript"><!--
var c="FFFFFF";
window.onload=function (){
setInterval(s ......

修复弹出JavaScript对话框时页面背景变白的问题

from http://niunan.javaeye.com/blog/248256
Page.ClientScript.RegisterStartupScript(Page.GetType(),"message", "<mce:script language='javascript' defer>alert('验证码输入错误!');</mce:script>"); ......

JavaScript键盘

JavaScript键盘事件侦听
在使用JavaScript做WEB键盘事件侦听捕获时,主要采用onkeypress、onkeydown、onkeyup三个事件进行出来。该三个事件的执行顺序如下:onkeydown -> onkeypress ->onkeyup。在一般情况下,采用三种键盘事件均可对键盘输入进行有效的响应。当在实际使用中,会发现这几者有些不同的差别。
  ......

javaScript验证提交

javaScript验证提交
看例:
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT=""&g ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号