根据父级URL中断帧

时间:2009-05-18 22:32:52

标签: javascript frames

我正在努力帮助我的一个朋友从一些讨厌的框架中打破他的网站: example。这通常不是问题,但是这个特定的网站通过在页面顶部放置一个不付给我朋友的广告来跨越一些道德界限。

以下是复杂的地方,他希望自己的网站能够在netvibes等特定网站的框架中使用。

所以,我试过这样的事情:

<!-- start break from getweb.info -->
<script type="text/javascript">

    purl = parent.location.href;
    //alert(purl);
    if(purl.indexOf('getweb') > 0 && top.frames.length!=0)
    {
        top.location=self.document.location;
    }
</script>
<!-- end break from getweb.info -->

但是,因为它需要是一个条件中断,这是行不通的,因为firefox。(假设其他人也有相同的错误,尚未经过测试)会给出一个错误,指出框架中的网站不允许获取父框架的location.href属性。

JavaScript是否有办法根据父框架的位置突破框架?

1 个答案:

答案 0 :(得分:2)

你正在遇到same origin policy。您无法看到具有不同原始域的帧的位置(或任何其他属性)。

但是,您可以看到自己的document.referrer。如果你是框架,那么引荐来源应该是包含框架的URL。

if (window.self != window.top && document.referrer.indexOf('getweb') > 0 ) {
  top.location.replace(window.location.pathname);
}

这不是防弹的。例如,框架站点可以使用中介(例如netvibes)。但是,它们可能会让他们停止构建你朋友的网站。