论坛首页 Web前端技术论坛

你能写出来吗,严格判断对象是否是WINDOW,JQ的判断暴弱了

浏览 14850 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-10-05   最后修改:2011-10-05
  没招了。。
的确不错的方法   果是IE9呢  返回是什么 能解释一下吗  没有IE9……
0 请登录后投票
   发表时间:2011-10-05  
太恐怖了,IE裡window 跟 document 的關係
0 请登录后投票
   发表时间:2011-10-05  
IE9 Object.prototype.toString.call(window) === "[object Window]"
因此它会在第二个分支就返回true
0 请登录后投票
   发表时间:2011-10-05  
我个人觉得JQ的方法好些。

用特异性去判断,可以解决当前问题,但对于后续是未知的。即便可以,也要不断扩充。而且这个不行,可以用instanceof,可以用enum,这些都是保留关键字。
0 请登录后投票
   发表时间:2011-10-06  
icedblog 写道
我个人觉得JQ的方法好些。

用特异性去判断,可以解决当前问题,但对于后续是未知的。即便可以,也要不断扩充。而且这个不行,可以用instanceof,可以用enum,这些都是保留关键字。

后续是可知的,因为对于IE9+以及其他标准浏览器都是使用Object.prototype.toString.call去判定!instanceof是无法解决iframe中的window判定问题,因为那是另一个执行环境。
0 请登录后投票
   发表时间:2011-10-06  
贴答案吧 ...
0 请登录后投票
   发表时间:2011-10-07  
各种牛擦啊!
0 请登录后投票
   发表时间:2011-10-08  
可以这样
function XXX(){
if(-[1,]){   
   alert("这不是IE浏览器!");   
}else{   
    alert("这是IE浏览器!");   
}
}
0 请登录后投票
   发表时间:2011-10-08  
(function(w){
	alert(w === window);
})(document);

这样试下
0 请登录后投票
   发表时间:2011-10-08  
function isWindow(obj) {
            return Object.prototype.toString.call(window) == Object.prototype.toString.call(obj);
        }
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics