隐藏其内容被代理阻止的iframe
我有一个iframe网页。 这些iframe用于显示一些外部网站数据。
但是当这些外部服务器在网络中被阻塞时会出现问题,它会出现“代理服务器拒绝连接”的错误。 这对我来说不太好看。
我想隐藏所有这些被阻止的iframe,或者想要在那里显示一些备用数据。
无法检查页面是否未加载。 但是,可以使用onload
事件处理程序。
重要的是不要依赖JQuery,因为JQuery也是一个必须加载的外部源。 在最后一个IFRAME元素之后的标记内添加此代码(通常在正文的末尾)。 码:
//Cannot rely on JQuery, as it has to be loaded (function(){//Anonymous wrapper. var iframes = document.getElementsByTagName("iframe"); var num_frames = iframes.length; //Function to add Event handlers var addLoad = window.addEventListener ? function(elem, func){ elem.addEventListener("load", func, true); } : window.attachEvent ? function(elem, func){ elem.attachEvent("onload", func); } : function(elem, func){ elem.onload = func; }; var success_load = 0; for(var i=0; i=0; i--){ if(!iframes[i].dataSuccessfullyLoaded){ iframes[i].parentNode.removeChild(iframes[i]); //Or: iframes[i].style.display = "none"; } } } }); })();
小提琴: http : //jsfiddle.net/3vnrg/
编辑
您的代理似乎发送状态代码为200的HTTP页面。另一个选项是包含CSS文件,并检查是否存在CSS变量:
/*From http://static.ak.fbcdn.net/rsrc.php/v1/yb/r/CeiiYqUQjle.css*/ #facebook .hidden_elem{display:none !important} #facebook .invisible_elem{visibility:hidden}
HTML:
JavaScript(在加载所有资源后执行此代码):
if($("#facebook div").css("display") != "none" || $("#facebook div").css("visibility") != "hidden") disableFBFrame(); // Where disableFBFrame(); is a function which hides the frame.