公司项目使用$.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);
}
});
};