判断目标是否是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 相关文章推荐
用javascript获取textarea中的光标位置
May 06 Javascript
thinkphp中常用的系统常量和系统变量
Mar 05 Javascript
JavaScript中具名函数的多种调用方式总结
Nov 08 Javascript
javascript中String对象的slice()方法分析
Dec 20 Javascript
jQuery实现友好的轮播图片特效
Jan 12 Javascript
javascript中AJAX用法实例分析
Jan 30 Javascript
修改Jquery Dialog 位置的实现方法
Aug 26 Javascript
微信小程序联网请求的轮播图
Jul 07 Javascript
谈谈JS中的!!
Dec 07 Javascript
Vue 页面跳转不用router-link的实现代码
Apr 12 Javascript
vue+express+jwt持久化登录的方法
Jun 14 Javascript
快速解决vue2+vue-cli3项目ie兼容的问题
Nov 17 Vue.js
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
yii权限控制的方法(三种方法)
2015/12/28 PHP
详解将数据从Laravel传送到vue的四种方式
2019/10/16 PHP
Code: write(s,d) 输出连续字符串
2007/08/19 Javascript
javascript脚本调试方法小结
2008/11/24 Javascript
10个新的最有前途的JavaScript框架
2009/03/12 Javascript
利用webqq协议使用python登录qq发消息源码参考
2013/04/08 Javascript
jquery定时滑出可最小化的底部提示层特效代码
2013/10/02 Javascript
JavaScript的继承的封装介绍
2013/10/15 Javascript
JavaScript时间转换处理函数
2015/04/14 Javascript
手机端页面rem宽度自适应脚本
2015/05/20 Javascript
基于OL2实现百度地图ABCD marker的效果
2015/10/01 Javascript
微信小程序开发一键登录 获取session_key和openid实例
2016/11/23 Javascript
Bootstrap CSS布局之代码
2016/12/17 Javascript
JavaScript中的toString()和toLocaleString()方法的区别
2017/02/15 Javascript
详解使用vue实现tab 切换操作
2017/07/03 Javascript
Vue-cli Eslint在vscode里代码自动格式化的方法
2018/02/23 Javascript
vue修改对象的属性值后页面不重新渲染的实例
2018/08/09 Javascript
python基础教程之面向对象的一些概念
2014/08/29 Python
Python编程中用close()方法关闭文件的教程
2015/05/24 Python
Python with语句上下文管理器两种实现方法分析
2018/02/09 Python
django初始化数据库的实例
2018/05/27 Python
不到40行代码用Python实现一个简单的推荐系统
2019/05/10 Python
Python2和3字符编码的区别知识点整理
2019/08/08 Python
Python简易版停车管理系统
2019/08/12 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
2020/05/09 Python
你不知道的葡萄干处理法、橙蜜处理法、二氧化碳酵母法
2021/03/17 冲泡冲煮
完美解决IE8下不兼容rgba()的问题
2017/03/31 HTML / CSS
购买瑞典当代设计的腕表和太阳眼镜:TRIWA
2016/10/30 全球购物
荷兰皇家航空公司官方网站:KLM Royal Dutch Airlines
2017/12/07 全球购物
英国排名第一的停车场运营商:NCP
2019/08/26 全球购物
SQL面试题
2013/04/30 面试题
常用UNIX 命令(Linux的常用命令)
2013/07/10 面试题
Linux内核产生并发的原因
2016/11/08 面试题
攻击最高的10只幽灵系神奇宝贝,坚盾剑怪排第一,第五最为可怕
2022/03/18 日漫
Vue OpenLayer测距功能的实现
2022/04/20 Vue.js