检测窗口卸载的位置

时间:2011-07-15 01:22:23

标签: javascript jquery javascript-events dom-events

因此,在我的网站上,我在iframe中加载了一个网页,并且有些网站使用框架破坏代码来突破iframe并将顶部窗口重定向到他们的网页。我想使用onbeforeunload事件来确定网页被重定向到的位置。是否有一个功能可以有效地让我event.get_redirect_location或其他某些行?

1 个答案:

答案 0 :(得分:0)

许多研究使我得出结论,如果window.location是从iframe设置的,那么JavaScript无法检查“下一个位置”将会是什么并比较这两个域。

这是我所知道的阻止iframe突破网站的唯一方法。首先,您将onbeforeunload功能设置为正常,并警告用户他/她将离开您的网站。然后 - 这是关键部分 - 您将代码添加到内部链接以防止更改页面触发onb​​eforeunload事件。这意味着onbeforeunload事件将如果用户离开

,则仅触发
(function(){
    window.onbeforeunload = function()
    { 
        if( !/\bnagged=true\b/.test( document.cookie ) )
        {
            document.cookie = "nagged=true";
            location.assign('http://www.mysite.com'); 

            return "You are being redirected off our site!"; 
        }
    } 

    var lnk;

    for(var i in document.links)
    {
        if( (lnk = document.links[i] ).href.indexOf( document.domain ) > -1 )
        {
            lnk.onclick = function()
            { 
                window.onbeforeunload = null; 
            } 
        }
    }
})();