搜狗浏览器和$.jBox的坑

公司项目使用$.jBox,因为使用了$.jBox.open方法,搜狗浏览器下会出现跨域问题,wtf?
jquery-1.8.3.min.js:2 Uncaught DOMException: Failed to read the 'contentDocument' property from 'HTMLIFrameElement': Blocked a frame with origin "http://localhost:8780" from accessing a cross-origin frame.
    at contents 

原因是Sogou会自动加上一个iframe在页面上,刚好$.jBox又有一段代码遍历所有的iframe,然后就出现跨域问题,临时解决办法

// 解决框架内object和applet被遮住问题
		var fade = function(iframe, callback){
			iframe.each(function(){
                                //加上这个暂时过滤搜狗的iframe
				if($(a(this)[0]).hasClass('sogou_sugg_feedbackquan')){
					return false;
				}
				var ifr = a(this).contents();
				if (ifr.find('object, applet').length > 0){
					var mf = a('#mainFrame')
					var mt = mf.offset()?mf.offset().top:0;
					var ml = mf.offset()?mf.offset().left:0;
					var tt = a(this).offset().top;
					var tl = a(this).offset().left;
					var top = mt == tt ? mt : mt + tt;
					var left = ml == tl ? ml : ml + tl;
					callback(a(this), ifr, top, left);
				}
				if (ifr.find("iframe").length > 0){
					fade(ifr.find("iframe"), callback);
				}
			});
		};

你可能感兴趣的:(搜狗浏览器和$.jBox的坑)