Avatar billede spacee Nybegynder
21. maj 2003 - 12:36 Der er 11 kommentarer og
1 løsning

onclick="exit=false;" feature i Jscript?

Hej Eksperter!

Dette er vigtigt for mig at få løst så derfor giver jeg 150 points til den som kan hjælpe.

På en html side hvor der også er et exit popup script indsættes følgende code:

<script language="javascript" src="timerbar2.js">

Denne timerbar loader i 10 sek og derefter redigerer den brugerne videre til en ny html side.

Problemet er at når den redigerer brugerne videre så trigger den også exitpopupen hvilket jeg ikke ønsker. Exitpopupen skal kun vises i tilfælde af at brugerne exit'er ud inden de 10 sek er gået.

normal vil man kunne bruge noget i stil med dette foran href, men det kan vist ikke lade sig gøre i dette tilfælde?

onclick="exit=false;"

Hvis det ikke kan løses i det lille js tag som indsættes på html siden, så kan det måske løses i selve Jscript filen. Her er koden for den:

-----------------------------------------------

var loadedcolor='darkgray' ;      // PROGRESS BAR COLOR
var unloadedcolor='lightgrey';    // COLOR OF UNLOADED AREA
var bordercolor='navy';            // COLOR OF THE BORDER
var barheight=15;                  // HEIGHT OF PROGRESS BAR IN PIXELS
var barwidth=300;                  // WIDTH OF THE BAR IN PIXELS
var waitTime=10;                  // NUMBER OF SECONDS FOR PROGRESSBAR

// THE FUNCTION BELOW CONTAINS THE ACTION(S) TAKEN ONCE BAR REACHES 100%.
// IF NO ACTION IS DESIRED, TAKE EVERYTHING OUT FROM BETWEEN THE CURLY BRACES ({})
// BUT LEAVE THE FUNCTION NAME AND CURLY BRACES IN PLACE.
// PRESENTLY, IT IS SET TO DO NOTHING, BUT CAN BE CHANGED EASILY.
// TO CAUSE A REDIRECT TO ANOTHER PAGE, INSERT THE FOLLOWING LINE:
// window.location="http://redirect_page.html";
// JUST CHANGE THE ACTUAL URL OF COURSE :)

var action=function()
  {

window.location="tv.html";
}

var ns4=(document.layers)?true:false;
var ie4=(document.all)?true:false;
var blocksize=(barwidth-2)/waitTime/10;
var loaded=0;
var PBouter;
var PBdone;
var PBbckgnd;
var Pid=0;
var txt='';
if(ns4){
txt+='<table border=0 cellpadding=0 cellspacing=0><tr><td>';
txt+='<ilayer name="PBouter" visibility="hide" height="'+barheight+'" width="'+barwidth+'" onmouseup="hidebar()">';
txt+='<layer width="'+barwidth+'" height="'+barheight+'" bgcolor="'+bordercolor+'" top="0" left="0"></layer>';
txt+='<layer width="'+(barwidth-2)+'" height="'+(barheight-2)+'" bgcolor="'+unloadedcolor+'" top="1" left="1"></layer>';
txt+='<layer name="PBdone" width="'+(barwidth-2)+'" height="'+(barheight-2)+'" bgcolor="'+loadedcolor+'" top="1" left="1"></layer>';
txt+='</ilayer>';
txt+='</td></tr></table>';
}else{
txt+='<div id="PBouter" onmouseup="hidebar()" style="position:relative; visibility:hidden; background-color:'+bordercolor+'; width:'+barwidth+'px; height:'+barheight+'px;">';
txt+='<div style="position:absolute; top:1px; left:1px; width:'+(barwidth-2)+'px; height:'+(barheight-2)+'px; background-color:'+unloadedcolor+'; font-size:1px;"></div>';
txt+='<div id="PBdone" style="position:absolute; top:1px; left:1px; width:0px; height:'+(barheight-2)+'px; background-color:'+loadedcolor+'; font-size:1px;"></div>';
txt+='</div>';
}

document.write(txt);

function incrCount(){
window.status="Loading...";
loaded++;
if(loaded<0)loaded=0;
if(loaded>=waitTime*10){
clearInterval(Pid);
loaded=waitTime*10;
setTimeout('hidebar()',100);
}
resizeEl(PBdone, 0, blocksize*loaded, barheight-2, 0);
}

function hidebar(){
clearInterval(Pid);
window.status='';
//if(ns4)PBouter.visibility="hide";
//else PBouter.style.visibility="hidden";
action();
}

function findlayer(name,doc){
var i,layer;
for(i=0;i<doc.layers.length;i++){
layer=doc.layers[i];
if(layer.name==name)return layer;
if(layer.document.layers.length>0)
if((layer=findlayer(name,layer.document))!=null)
return layer;
}
return null;
}

function progressBarInit(){
PBouter=(ns4)?findlayer('PBouter',document):(ie4)?document.all['PBouter']:document.getElementById('PBouter');
PBdone=(ns4)?PBouter.document.layers['PBdone']:(ie4)?document.all['PBdone']:document.getElementById('PBdone');
resizeEl(PBdone,0,0,barheight-2,0);
if(ns4)PBouter.visibility="show";
else PBouter.style.visibility="visible";
Pid=setInterval('incrCount()',95);
}

function resizeEl(id,t,r,b,l){
if(ns4){
id.clip.left=l;
id.clip.top=t;
id.clip.right=r;
id.clip.bottom=b;
}else id.style.width=r+'px';
}

window.onload=progressBarInit;

-----------------------------------------------


Håber at der er nogle af jer Jscript eksperter som kan komme med en løsning.

Mvh.
Henrik
Avatar billede roenving Novice
21. maj 2003 - 12:44 #1
Hvordan laver du din exitpopup -- jeg mangler li'som no'et ,-)
Avatar billede spacee Nybegynder
21. maj 2003 - 12:46 #2
<SCRIPT LANGUAGE=JAVASCRIPT>
<!--
var exit=true;
function exitpop()
{
if (exit)
open("http://www.domain.com","new_window");
}
//-->
</script>

og med onunload="exitpop()" i body
Avatar billede roenving Novice
21. maj 2003 - 12:58 #3
Så skal du:

<body ... onload="var exit=true;...Hvad du ellers gør onload..." onunload=exitpop;">

fjerne den tilsvarende linje i den sidste du postede, og så skal du -- lige i midten af det du først postede:

function hidebar(){
clearInterval(Pid);
window.status='';
//if(ns4)PBouter.visibility="hide";
//else PBouter.style.visibility="hidden";
exit=false;
action();
}

hth
jes
Avatar billede spacee Nybegynder
21. maj 2003 - 13:18 #4
Så snart at var exit=true; er væk fra dette script så vil den ikke trigge exitpopupen... heller ikke hvis der exit ud inden de 10 sek.

<SCRIPT LANGUAGE=JAVASCRIPT>
<!--
var exit=true;
function exitpop()
{
if (exit)
open("http://www.domain.com","new_window");
}
//-->
</script>
------------------------------
Sådan ser det ud nu:

<body bgcolor="#FFFFFF" onload="var exit=true;" onunload="exitpop();">
<SCRIPT LANGUAGE=JAVASCRIPT>
<!--
function exitpop()
{
if (exit)
open("http://www.domain.com","new_window");
}
//-->
</script>

OG:

function hidebar(){
clearInterval(Pid);
window.status='';
//if(ns4)PBouter.visibility="hide";
//else PBouter.style.visibility="hidden";
exit=false;
action();
}
Avatar billede roenving Novice
21. maj 2003 - 13:26 #5
Men den skifter til

window.location="tv.html";

?-)
Avatar billede spacee Nybegynder
21. maj 2003 - 13:31 #6
Jep det har du ret i :)

Men men.. den skulle jo gerne vise den exitpopup hvis brugeren exiter ud.

Lukker jeg browser vinduet som det er nu får jeg ingen popup.
Avatar billede roenving Novice
21. maj 2003 - 13:34 #7
Det _burde_ ikke betyde noget, men hvis du nu lægger din exitpop-kode op i <head>-sektionen (og sætter var exit... tilbage)
Avatar billede roenving Novice
21. maj 2003 - 13:37 #8
Forøvrigt kom jeg til at læse din overskrift -- bedre sent end aldrig ,-)

onclick="exit=false;"

er fuldstændig lovlig i javascript ...
Avatar billede spacee Nybegynder
21. maj 2003 - 13:50 #9
Exitscripter er flytter til <head> sektionen og var exit er sat tilbage.

Det virker nu 100% som planlagt! :)

Mange tak for den hurtigt hjælp roenving!

Mvh
Henrik
Avatar billede spacee Nybegynder
21. maj 2003 - 13:51 #10
Smider du lige et svar..
Avatar billede roenving Novice
21. maj 2003 - 13:52 #11
Velbekomme !-)
Avatar billede roenving Novice
21. maj 2003 - 14:03 #12
-- tak for points ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester