论坛首页 Web前端技术论坛

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

浏览 14852 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-10-11  
bug肯定有,不过这种问题是没必要纠缠下去的。
就像 zeroneta(抓咪咪)即便偶然发现IE8-的这个bt但独特的特性:
w.document == w && w != w.document
也同样存在恶意修改属性这个问题。

要命的是IE8- 中的window对象似乎也没有不可修改的属性。
0 请登录后投票
   发表时间:2011-10-14  

(function(top, window, document, undefined){
   Fan.isWindow = (function () { 
	    var f = function (c, w, i, r) {
	          if (!w) return false;
	          if (w == c) return true;
	          while (!r && w.length > i)
	              r = f(c, w[i++], 0, false);
	          return r;
	     }; 
	   return function (c) {return c == window || c == top || f(c, top, 0, false);};
	})();
})(top, window, document);


几天没来 才看到 我没有时间试  但是看到 这个感觉就是还是有BUG

现在我来贴一个判断WINDOW的方法

var inArr = Array.prototype.indexOf || function( a ) {
	//模拟数组indexOf原型
	for ( var s = 0, d = this.length; s < d; s ++ ) {
		if ( this[ s ] === a ) {
			return s;
		};
	};
	return -1;
},
//下面是调用判断
is_window = function( a ) {
	return a === window || inArr.call( window.frames, a ) > -1;
};


提取 CORE.JS 里的判断方法
0 请登录后投票
论坛首页 Web前端技术版

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