JS实现跨域跳出框架
出现问题的原因:
客户新建网站没有备案又急欲访问,那么除了不使用大陆服务器外渠道采用转发的方式,表现出来的结果就是制作好的网站页面被某个域框架了进去,访问用户域名时看到的页面源文件为
<frameset><frame src='http://*'><frame><frameset>
这时访问http://*这个地址,才能得到原本网站的效果,由此产生不显示标题文字、后台地址不对、一些JS效果丢失(例如引用的滚动效果MSClass.js)等一系列问题;
希望达到的目的:
客服访问已有域名,通过嵌入到首页的js代码直接在当前窗口跳转到http://*这个地址,避免出现框架内问题并且方便客户访问;
注意的问题:
跨域时会有“拒绝访问”、“没有权限”之类JS出错,并且要有判断避免页面的反复刷新
代码:
<script language='javascript'> try { getu=window.parent.document.getElementsByTagName("frame"); } catch(err) { window.parent.location.href='http://*'; } </script>
总结:
因为使用window.parent.document.getElementsByTagName("frame");无法得到frame的各种信息,那么被框架时是跨域的、会抛出拒绝访问错误,捕捉这个错误,当产生错误时证明页面是跨域的,利用window.parent.location.href='http://*;跳转即可,当没有这个错误时,页面不是被框架的不会报错,就不会进行跳转,避免了重复刷新。