PDA

View Full Version : Alert when manually leaving site (not through link)



richmurphy
03-22-2010, 03:22 AM
Hello all! I have some code here that is working exactly how I want it to with one exception. This code itself alerts users when they leave our site. Basically asking them to participate in a survey. The one snag with this code is that it will not alert them when they manually leave the site, by manually I mean type it into the address bar. Which I think is what most people do when leaving a site. Any and all help would be GREATLY appreciated. Thanks!

Here is the code:



function SurveyRelocationManager(){
//Constr.
this.aInternalURLs = new Array();
}
SurveyRelocationManager.prototype.init = function(){

this.setInternalURLs();
}
SurveyRelocationManager.prototype.setSurveyURL = function(s){
this.sSurv = s;
}
SurveyRelocationManager.prototype.getSurveyURL = function(){
return this.sSurv.valueOf();
}
SurveyRelocationManager.prototype.addInternalURL = function(s){
this.aInternalURLs.push(s);
}
SurveyRelocationManager.prototype.removeInternalURL = function(s){
for(var a = 0; a<this.aInternalURLs.length; a++){
if(this.aInternalURLs[a] == s){
this.aInternalURLs.splice(a, 1);
}
}
}
SurveyRelocationManager.prototype.getInternalURLs = function(){
return this.aInternalURLs.slice(0);
}
SurveyRelocationManager.prototype.getURLIsInternal = function(s){
var t;
/*
KLUDGE: t.indexOf returns -1 if aInternalURLs has no
slash at the end. Somehow forward slashes cancels the eval.
TODO: Refactor t.indexOf.
*/

for(var a = 0; a<this.aInternalURLs.length; a++){
t = this.aInternalURLs[a];
//
if(s.indexOf(t) != -1){
return true;
}else if(s.indexOf('http://') == -1)
return true;
}
return false;
}
SurveyRelocationManager.prototype.onClick = function(o){
var b = this.getURLIsInternal(o.toString());
if(!b){
var c = confirm("Do you want to take the survey?");
if(c){
//TODO: Relocate here.
document.location = this.getSurveyURL();
} else {
return true;
}
} else {
return true;
}
return false;
}