Javascript 如何将此退出弹出窗口从iframe转换为重定向?
相信我,我和你一样讨厌这些。不过,这是为客户准备的,所以他们应该做什么并不取决于我:) 以下是您如何使用它:Javascript 如何将此退出弹出窗口从iframe转换为重定向?,javascript,html,iframe,Javascript,Html,Iframe,相信我,我和你一样讨厌这些。不过,这是为客户准备的,所以他们应该做什么并不取决于我:) 以下是您如何使用它: <script type="text/javascript"> var exitsplashmessage = 'Please dont go!'; var exitsplashpage = 'http://www.site.com/exitpage/'; </script> <script type="text/javascript" src="/
<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>
var exitsplashmessage='请不要走!';
var exitsplashpage=http://www.site.com/exitpage/';
问题是它将其加载到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;
函数addLoadEvent(func){
var oldonload=window.onload;
if(typeof window.onload!=“函数”){
window.onload=func;
}否则{
window.onload=函数(){
if(oldonload){
oldonload();
}
func();
}
}
}
函数addClickEvent(a、i、func){
if(a[i].onclick!=“函数”的类型){
a[i].onclick=func;
}
}
var theDiv=“”;
theDiv=theDiv+“”;
theDiv=theDiv+“”;
theBody=document.body;
如果(!主体){
theBody=document.getElementById(“body”);
如果(!主体){
theBody=document.getElementsByTagName(“body”)[0];
}
}
var PreventExitSplash=假;
函数DisplayExitSplash(){
如果(PreventExitSplash==false){
滚动到(0,0);
PreventExitSplash=真;
divtag=document.createElement(“div”);
setAttribute(“id”,“ExitSplashMainOuterLayer”);
divtag.style.position=“绝对”;
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”;
body.bottomMargin=“0px”;
theBody.leftMargin=“0px”;
theBody.style.overflow=“hidden”;
appendChild(divtag);
返回exitsplashmessage;
}
}
var a=document.getElementsByTagName('a');
对于(变量i=0;i
这样行吗
function DisplayExitSplash() {
window.location = exitsplashpage;
}
这样行吗
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>
var exitsplashmessage='请不要走!';
var exitsplashpage=http://www.site.com/exitpage/';
DisplayExitSplash=函数(){
window.location.href=exitsplashpage;
};
window.onbeforeunload=显示ExitSplash;
jshiddle举例说明了这一概念:
您可以重新定义
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>
var exitsplashmessage='请不要走!';
var exitsplashpage=http://www.site.com/exitpage/';
DisplayExitSplash=函数(){
window.location.href=exitsplashpage;
};
window.onbeforeunload=显示ExitSplash;
jshiddle举例说明了这一概念: 将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;
}
}
将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;
}
}
当我在exit.js中更改它时,所有窗口都没有显示。嗯,那么我不确定,我可以帮你找出问题所在。当我在exit.js中更改它时,所有窗口都没有显示。嗯,我不确定,我可以帮你找出问题所在。只是再次编辑,尝试将引用重新分配给
onbeforeunload
事件上的DisplayExitSplash
方法。尽管我在函数中放入了示例console.log,但它甚至根本没有加载该方法。我可以直接在exit.js中编辑它吗?我在exit.js中更改了它,但什么都没有发生(就像TerryR的回答一样)。窗口刚刚关闭,没有弹出窗口,只是再次编辑,请尝试在onbeforeunload
事件上重新分配对DisplayExitSplash
方法的引用。虽然我在函数中放入了示例console.log,但它甚至根本没有加载该引用。我可以直接在exit.js中编辑它吗?我在exit.js中更改了它,但什么都没有发生(就像TerryR的回答一样)。窗口只是关闭,没有弹出窗口