簡體   English   中英

如何將退出彈出窗口從iframe轉換為重定向?

[英]How can i convert this exit popup from an iframe to a redirect?

相信我,我和你一樣討厭這些。 雖然這是給客戶的,所以我不能決定他們應該做什么:)

使用方法如下:

<script type="text/javascript">
  var exitsplashmessage = 'Please dont go!';
  var exitsplashpage = 'http://www.site.com/exitpage/';
</script>
<script type="text/javascript" src="/exit.js"></script>

問題是它將它加載到iframe中,這不是我真正想要做的。 我只想將其重定向到使用exitsplashpage定義的頁面;

這是exit.js代碼:

function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function () {
            if (oldonload) {
                oldonload();
            }
            func();
        }
    }
}

function addClickEvent(a, i, func) {
    if (typeof a[i].onclick != 'function') {
        a[i].onclick = func;
    }
}
var theDiv = '<div id="ExitSplashDiv"  style="display:block; width:100%; height:100%; position:absolute; background:#FFFFFF; margin-top:0px; margin-left:0px;" align="center">';
theDiv = theDiv + '<iframe src="' + exitsplashpage + '" width="100%" height="100%" align="middle" frameborder="0"></iframe>';
theDiv = theDiv + '</div>';
theBody = document.body;
if (!theBody) {
    theBody = document.getElementById("body");
    if (!theBody) {
        theBody = document.getElementsByTagName("body")[0];
    }
}
var PreventExitSplash = false;

function DisplayExitSplash() {
    if (PreventExitSplash == false) {
        window.scrollTo(0, 0);
        PreventExitSplash = true;
        divtag = document.createElement("div");
        divtag.setAttribute("id", "ExitSplashMainOuterLayer");
        divtag.style.position = "absolute";
        divtag.style.width = "100%";
        divtag.style.height = "100%";
        divtag.style.zIndex = "99";
        divtag.style.left = "0px";
        divtag.style.top = "0px";
        divtag.innerHTML = theDiv;
        theBody.innerHTML = "";
        theBody.topMargin = "0px";
        theBody.rightMargin = "0px";
        theBody.bottomMargin = "0px";
        theBody.leftMargin = "0px";
        theBody.style.overflow = "hidden";
        theBody.appendChild(divtag);
        return exitsplashmessage;
    }
}
var a = document.getElementsByTagName('A');
for (var i = 0; i < a.length; i++) {
    if (a[i].target !== '_blank') {
        addClickEvent(a, i, function () {
            PreventExitSplash = true;
        });
    } else {
        addClickEvent(a, i, function () {
            PreventExitSplash = false;
        });
    }
}
disablelinksfunc = function () {
    var a = document.getElementsByTagName('A');
    for (var i = 0; i < a.length; i++) {
        if (a[i].target !== '_blank') {
            addClickEvent(a, i, function () {
                PreventExitSplash = true;
            });
        } else {
            addClickEvent(a, i, function () {
                PreventExitSplash = false;
            });
        }
    }
}
addLoadEvent(disablelinksfunc);
disableformsfunc = function () {
    var f = document.getElementsByTagName('FORM');
    for (var i = 0; i < f.length; i++) {
        if (!f[i].onclick) {
            f[i].onclick = function () {
                PreventExitSplash = true;
            }
        } else if (!f[i].onsubmit) {
            f[i].onsubmit = function () {
                PreventExitSplash = true;
            }
        }
    }
}
addLoadEvent(disableformsfunc);
window.onbeforeunload = DisplayExitSplash;

這行得通嗎?

function DisplayExitSplash() {
    window.location = exitsplashpage;
}

您可以重新定義 DisplayExitSplash函數:

<script type="text/javascript">
  var exitsplashmessage = 'Please dont go!';
  var exitsplashpage = 'http://www.site.com/exitpage/';
</script>
<script type="text/javascript" src="/exit.js"></script>
<script type="text/javascript">
    DisplayExitSplash = function () {
        window.location.href = exitsplashpage;
    };
    window.onbeforeunload = DisplayExitSplash;
</script>

JSFiddle舉例說明了這一概念:

http://jsfiddle.net/hFXPE/

以此替換DisplayExitSplash()函數

function DisplayExitSplash() {
if (PreventExitSplash == false) {
    window.scrollTo(0, 0);
    PreventExitSplash = true;
    divtag = document.createElement("div");
    divtag.setAttribute("id", "ExitSplashMainOuterLayer");
    divtag.style.position = "absolute";
    divtag.style.width = "100%";
    divtag.style.height = "100%";
    divtag.style.zIndex = "99";
    divtag.style.left = "0px";
    divtag.style.top = "0px";
    divtag.innerHTML = theDiv;
    theBody.innerHTML = "";
    theBody.topMargin = "0px";
    theBody.rightMargin = "0px";
    theBody.bottomMargin = "0px";
    theBody.leftMargin = "0px";
    theBody.style.overflow = "hidden";
    theBody.appendChild(divtag);
    window.location.href = exitsplashpage;
    return exitsplashmessage;
}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM