判断目标是否是window,document,和拥有tagName的Element的代码


Posted in Javascript onMay 31, 2010
function isWindow( obj ) 
{ 
if( typeof obj.closed == 'undefined' ) return false; 
var result = /\[object (window|global)\]/i.test( Object.prototype.toString.call( obj ) ); 
if( result )return result; 
try{ 
obj.closed = obj.closed; 
return false; 
}catch(e) 
{ 
result = true; 
} 
return result; 
} 
function isDocument( obj ) 
{ 
if( typeof obj.body == 'undefined' ) return false; 
var b = obj.body; 
try{ 
obj.body = null; 
obj.body = b; 
return false; 
}catch(e) 
{ 
return true; 
} 
} 
function isElement( o ) 
{ 
var tn = 'tagName',temp = o[tn],result; 
if( typeof temp == 'undefined' )return false; 
try{ 
o[tn] = null; 
result = ( temp == o[tn] ); 
o[tn] = temp; 
return result; 
}catch(e) 
{ 
return true; 
} 
} function getOwnerWindow( node ) 
{ 
if( isWindow( node ) )return node; 
var doc = isDocument( node ) ? node : node.ownerDocument; 
return doc.view || doc.parentWindiw || doc.defaultView; 
}

需要充分测试
Javascript 相关文章推荐
jQuery下实现等待指定元素加载完毕(可改成纯js版)
Jul 11 Javascript
在JavaScript中使用NaN值的方法
Jun 05 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【一】
May 10 Javascript
【经典源码收藏】jQuery实用代码片段(筛选,搜索,样式,清除默认值,多选等)
Jun 07 Javascript
javascript实现瀑布流动态加载图片原理
Aug 12 Javascript
BootStrap表单宽度设置方法
Mar 10 Javascript
详解Angular2中Input和Output用法及示例
May 21 Javascript
js防抖和节流的深入讲解
Dec 06 Javascript
浅谈Vue 性能优化之深挖数组
Dec 11 Javascript
vue里如何主动销毁keep-alive缓存的组件
Mar 21 Javascript
VUE实现密码验证与提示功能
Oct 18 Javascript
如何在vue 中引入使用jquery
Nov 10 jQuery
js 数组的for循环到底应该怎么写?
May 31 #Javascript
javascript 四则运算精度修正函数代码
May 31 #Javascript
ASP 过滤数组重复数据函数(加强版)
May 31 #Javascript
javascript 子窗体父窗体相互传值方法
May 31 #Javascript
js post方式传递提交的实现代码
May 31 #Javascript
JS 类型转换常见方法小结
May 31 #Javascript
javascript 传统事件模型构造的事件监听器实现代码
May 31 #Javascript
You might like
php遍历文件夹下的所有文件和子文件夹示例
2014/03/20 PHP
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
2015/07/06 PHP
微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
2016/01/12 PHP
php简单创建zip压缩文件的方法
2016/04/30 PHP
thinkPHP数据库增删改查操作方法实例详解
2016/12/06 PHP
yii2中关于加密解密的那些事儿
2018/06/12 PHP
PHP XML Expat解析器知识点总结
2019/02/15 PHP
laravel5 Eloquent 实现事务方式
2019/10/21 PHP
使用SyntaxHighlighter实现HTML高亮显示代码的方法
2010/02/04 Javascript
jQuery+ajax中getJSON() 用法实例
2014/12/22 Javascript
深入分析下javascript中的[]()+!
2015/07/07 Javascript
tuzhu_req.js 实现仿百度图片首页效果
2015/08/11 Javascript
jQuery实现的登录浮动框效果代码
2015/09/26 Javascript
详解Vue-cli 创建的项目如何跨域请求
2017/05/18 Javascript
原生JS获取元素的位置与尺寸实现方法
2017/10/18 Javascript
详解vue-cli项目中怎么使用mock数据
2018/05/29 Javascript
swiper在vue项目中loop循环轮播失效的解决方法
2018/09/15 Javascript
vue实现导航菜单和编辑文本的示例代码
2020/07/04 Javascript
使用graphics.py实现2048小游戏
2015/03/10 Python
python虚拟环境virtualenv的使用教程
2017/10/20 Python
python使用筛选法计算小于给定数字的所有素数
2018/03/19 Python
详解tensorflow载入数据的三种方式
2018/04/24 Python
Python实现聊天机器人的示例代码
2018/07/09 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
python脚本开机自启的实现方法
2019/06/28 Python
python使用Qt界面以及逻辑实现方法
2019/07/10 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
2020/02/07 Python
django使用JWT保存用户登录信息
2020/04/22 Python
芬兰设计商店美国:Finnish Design Shop US
2019/03/25 全球购物
线程同步的方法
2016/11/23 面试题
社区母亲节活动方案
2014/03/05 职场文书
2014年车间主任工作总结
2014/12/10 职场文书
2015秋季运动会通讯稿
2015/07/18 职场文书
了解Redis常见应用场景
2021/06/23 Redis
python树莓派通过队列实现进程交互的程序分析
2021/07/04 Python
python双向链表实例详解
2022/05/25 Python