判断目标是否是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 相关文章推荐
JS array 数组详解
Mar 22 Javascript
基于jQuery的左右滚动实现代码
Dec 03 Javascript
jQuery点击自身以外地方关闭弹出层的简单实例
Dec 24 Javascript
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
Oct 29 Javascript
JavaScript判断微信浏览器实例代码
Jun 13 Javascript
Javascript中浏览器窗口的基本操作总结
Aug 18 Javascript
Angularjs中使用指令绑定点击事件的方法
Mar 30 Javascript
vue快捷键与基础指令详解
Jun 01 Javascript
Vue iview-admin框架二级菜单改为三级菜单的方法
Jul 03 Javascript
详解Vue源码中一些util函数
Apr 24 Javascript
vuex存值与取值的实例
Nov 06 Javascript
javascript实现打砖块小游戏(附完整源码)
Sep 18 Javascript
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 面向对象 final类与final方法
2010/05/05 PHP
thinkphp实现多语言功能(语言包)
2014/03/04 PHP
PHP递归调用数组值并用其执行指定函数的方法
2015/04/01 PHP
jQuery技巧大放送 学习jquery的朋友可以看下
2009/10/14 Javascript
使用Math.floor与Math.random取随机整数的方法详解
2013/05/07 Javascript
Extjs NumberField后面加单位实现思路
2013/07/30 Javascript
javascript判断两个IP地址是否在同一个网段的实现思路
2013/12/13 Javascript
使用FlexiGrid实现Extjs表格效果方法分享
2014/12/16 Javascript
11种ASP连接数据库的方法
2015/09/18 Javascript
jQuery实现的简单提示信息插件
2015/12/08 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
jQuery网页定位导航特效实现方法
2016/12/19 Javascript
D3.js中强制异步文件读取同步的几种方法
2017/02/06 Javascript
在使用JSON格式处理数据时应该注意的问题小结
2017/05/20 Javascript
JS设计模式之策略模式概念与用法分析
2018/02/05 Javascript
node使用promise替代回调函数
2018/05/07 Javascript
vue项目中实现的微信分享功能示例
2019/01/21 Javascript
nuxt.js写项目时增加错误提示页面操作
2020/11/05 Javascript
Python中最大最小赋值小技巧(分享)
2017/12/23 Python
详解python中asyncio模块
2018/03/03 Python
Python实现计算文件MD5和SHA1的方法示例
2019/06/11 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
2020/01/04 Python
tensorflow 动态获取 BatchSzie 的大小实例
2020/06/30 Python
HTML5 图片预加载的示例代码
2020/03/25 HTML / CSS
英国、欧洲和全球租车服务:Avis英国
2016/08/29 全球购物
蒂娜商店:Tiina the Store
2019/12/07 全球购物
网吧最新创业计划书范文
2014/03/27 职场文书
会计求职信
2014/05/29 职场文书
二手房购房协议书范本
2014/10/05 职场文书
2015年化验室工作总结
2015/04/23 职场文书
党支部评议意见
2015/06/02 职场文书
飞屋环游记观后感
2015/06/08 职场文书
初三英语教学反思
2016/02/15 职场文书
详细谈谈JavaScript中循环之间的差异
2021/08/23 Javascript
深入讲解Vue中父子组件通信与事件触发
2022/03/22 Vue.js
Golang连接并操作MySQL
2022/04/14 MySQL