//ihipop (function(){ try { if (top.location.hostname != self.location.hostname) throw 1; } catch (e) { alert('1'); top.location.href = self.location.href; } })();
top.location.hostname表示上层的域名,正常情况下和self应该是一样的。但是这个属性如果跨域是不能直接存取的,所以只要捕获到访问top.location.hostname出现错误,说明就在frame里面了。
弄那个throw 1 是为了兼容Chrome。Chrome和有些浏览器不能跨域存取的错误catch不到的。