Open POP UP on window close

I need code , compatible both with IE and Firefox ,for opening a pop up  window with out any alerts if visitors is closing widow with out clicking any where on page .
LVL 20
Muhammad WasifAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

fsze88Commented:
try this
<script type="text/javascript">
 
  if (navigator.userAgent.toUpperCase().indexOf('MSIE')>=0){
    browserType = "MSIE";
  } else if (navigator.userAgent.toUpperCase().indexOf('SAFARI')>=0){
    browserType = "SAFARI";
  }else if (navigator.userAgent.toUpperCase().indexOf('OPERA')>=0){
    browserType = "OPERA";
  }else if (navigator.userAgent.toUpperCase().indexOf('FIREFOX')>=0){
    browserType = "FIREFOX";
  }else{
    browserType = "";
  }
 
function unloadWindowEvent(){
  //alert("abc");
  window.open("http://www.google.com","abc");
}
 
if (browserType == "MSIE"){
  window.onunload = function(){
  window.open("http://www.google.com","abc");
}
}else if (browserType == "FIREFOX"){
  window.addEventListener("unload", unloadWindowEvent, false); 
}
</script>

Open in new window

0
Adam ChanCommented:
and here is the bit about not clicking anywhere.
<head>
<script language="javascript" type="text/javascript">
var clickedAnywhere = false;
function clickAction() {
  clickedAnywhere = true;
}
 
function popupOnClose() {
  if (!clickedAnywhere) {
    // popup code
  }
}
</script>
</head>
 
// onclick event on body tag
<body onclick="clickAction()">

Open in new window

0
Muhammad WasifAuthor Commented:
Hi addamez:

I can not use body tag. How can I call this with out using body tag using java script only.
0
Determine the Perfect Price for Your IT Services

Do you wonder if your IT business is truly profitable or if you should raise your prices? Learn how to calculate your overhead burden with our free interactive tool and use it to determine the right price for your IT services. Download your free eBook now!

fsze88Commented:
...... comment 24742859 is works on ie,ff without using body tag........
0
Adam ChanCommented:
To fsze88:

 Your code works perfectly fine, just that it did not cover all of the specifications.
quote wasifg
"opening a pop up  window with out any alerts if visitors is closing widow with out clicking any where on page"


To wasifg:

I don't know the code off the top of my head, you could possibly add a clickEvent listener which calls a function that adds the unloadWindowEvent listener as per fsze88's code.
So if the user clicks anywhere and then close, the unloadWindow event is triggered.

fsze88 can probably help you with that because I am not too familiar with browser events.

Cheers
0
fsze88Commented:
addamez,
Okey, I should have some misunderstanding of this question. Please follow this question.

wasifg,
Please don't split points to me, because I don't want to be accept/assist in this question and I having enough points for this month already.
I think addamez should able to help you!

https://developer.mozilla.org/en/DOM/element.addEventListener may help both of you
0
Muhammad WasifAuthor Commented:
addamez :
How can I call these without using body tag . I also need to pass a string from parent window URL to this pop up. Can you help mw with this too?
0
Adam ChanCommented:
give this a try..
i took part of fsze88's code and modified it to get this

as for passing a string to the popup, assuming you are using php, you can modify the url in the window.open function to something like..

window.open("http://www.mywebsite.com/popup.php?string=some_text");

then in the popup.php file you can use $_GET['string'] to retriev the content from the url.

if you cannot use php, you can put javascript in the popup page and use location.href to get the whole url as a string, and extract the necessary bits you need via string manipulation

<script type="text/javascript">
var url = location.href;
</script>

consider using the string.split() method.
<script language="javascript" type="text/javascript">
 
if (navigator.userAgent.toUpperCase().indexOf('MSIE')>=0){
  browserType = "MSIE";
} else if (navigator.userAgent.toUpperCase().indexOf('SAFARI')>=0){
  browserType = "SAFARI";
}else if (navigator.userAgent.toUpperCase().indexOf('OPERA')>=0){
  browserType = "OPERA";
}else if (navigator.userAgent.toUpperCase().indexOf('FIREFOX')>=0){
  browserType = "FIREFOX";
}else{
	browserType = "";
}
 
function init() {
	if (browserType == "MSIE"){
		window.attachEvent('mousedown',clickEventHandler);
		window.attachEvent('unload',unloadWindowEvent);
	} else if (browserType == "FIREFOX") {
		window.addEventListener('mousedown',clickEventHandler,false);
		window.addEventListener("unload", unloadWindowEvent, false); 
	}
}
 
function clickEventHandler() {
	if (browserType == "MSIE"){
		window.detachEvent('mousedown',clickEventHandler);
		window.detachEvent('unload',unloadWindowEvent);
	} else if (browserType == "FIREFOX"){
		window.removeEventListener('mousedown',clickEventHandler,false);
		window.removeEventListener('unload',unloadWindowEvent,false);
	}
}
 
function unloadWindowEvent(){
  //alert("abc");
  window.open("http://www.google.com");
}
 
window.onload=init;
 
</script>

Open in new window

0
Muhammad WasifAuthor Commented:
I tried this code and facing an issue. On refreshing the page, pop up gets open . I don't need this .
0
Adam ChanCommented:
That is expected behaviour. Rrefreshing the page = unloading and loading again.
Quick work around is if you click somewhere before refreshing, that should stop the popup from opening.
0
Muhammad WasifAuthor Commented:
OK , I will add some thing for this, but have you checked this code in IE7 . Its working fine in FF but not on IE7
0
Adam ChanCommented:
Give the following a try. I've tested it in IE8 with browser mode set to IE7.
<script language="javascript" type="text/javascript">
 
if (navigator.userAgent.toUpperCase().indexOf('MSIE')>=0){
  browserType = "MSIE";
} else if (navigator.userAgent.toUpperCase().indexOf('SAFARI')>=0){
  browserType = "SAFARI";
}else if (navigator.userAgent.toUpperCase().indexOf('OPERA')>=0){
  browserType = "OPERA";
}else if (navigator.userAgent.toUpperCase().indexOf('FIREFOX')>=0){
  browserType = "FIREFOX";
}else{
	browserType = "";
}
 
function init() {
  if (browserType == "MSIE"){
    document.attachEvent('onmousedown',clickEventHandler);
  } else if (browserType == "FIREFOX") {
    window.addEventListener('mousedown',clickEventHandler,false);
    window.addEventListener("unload", unloadWindowEvent, false); 
  }
}
 
function clickEventHandler() {
  if (browserType == "MSIE") {
    window.onunload = function(){
      window.open("http://www.google.com/");
    }
  } else if (browserType == "FIREFOX") {
    window.removeEventListener("unload", unloadWindowEvent, false); 
  }
}
 
function unloadWindowEvent(){
  window.open("http://www.google.com");
}
 
window.onload=init;
 
</script>

Open in new window

0
Muhammad WasifAuthor Commented:
On IE 7 POPUP opens when we click on window .Opposite what was required. can you check ?
0
Adam ChanCommented:
My apologies.
Looks like I copied the wrong script. Here's the correct one.

Cheers
<script language="javascript" type="text/javascript">
 
if (navigator.userAgent.toUpperCase().indexOf('MSIE')>=0){
  browserType = "MSIE";
} else if (navigator.userAgent.toUpperCase().indexOf('SAFARI')>=0){
  browserType = "SAFARI";
}else if (navigator.userAgent.toUpperCase().indexOf('OPERA')>=0){
  browserType = "OPERA";
}else if (navigator.userAgent.toUpperCase().indexOf('FIREFOX')>=0){
  browserType = "FIREFOX";
}else{
        browserType = "";
}
var clicked = false;
function init() {
  if (browserType == "MSIE"){
    document.attachEvent('onmousedown',clickEventHandler);
  } else if (browserType == "FIREFOX") {
    window.addEventListener('mousedown',clickEventHandler,false);
    window.addEventListener('unload', unloadWindowEvent, false); 
  }
}
 
function clickEventHandler() {
  clicked=true;
  if (browserType == "MSIE") {
	document.detachEvent('onmousedown',clickEventHandler);
  } else if (browserType == "FIREFOX") {
    window.removeEventListener('unload', unloadWindowEvent, false); 
  }
}
 
function unloadWindowEvent(){
  if (!clicked) {
    window.open("http://www.google.com");
  }
}
 
if (browserType == "MSIE") {
  window.onunload=unloadWindowEvent;
}
 
window.onload=init;
 
</script>

Open in new window

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Web Browsers

From novice to tech pro — start learning today.