logout time out :) to protomou javascript

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

logout time out :) to protomou javascript

Δημοσίευση από Rapid-eraser » 09 Ιουν 2005 01:55

Lipov teliosa to proto mou va javascript pou kavei kati allo ektos apo elegxous apo formes kai tetoia :P

dev eivai tpt to idietero alla mou xriastike se kapoio panel kai epidi dev brika
kati etoimo ekei ekso eipa va to kavw movos mou. Kai mias kai exoume fs edw :P Eipa va to kavw post
mpas kai xrisimefsei kai se kaveva allo.

To script kavei to eksis ksekivaei eva counter avapoda metraei kapoia seconts kai kavei refresh stnv selida. Taftoxrova exei eva progress bar
to opoio adiazei gia va eivai pio efetzidiko to olo 8ema

Para8eto stn sivexeia olo tov kodika eva live paradigma mporite va to brite sto LIVE DEMO

To counter eivai apli ipo8esi va givei .
Xrisimopiw seconts se mia integer timi kai me tnv settimeout
kavw mia loopa adiazo mexri va brw 0 sec kai to dixvw

To progressbar eivai telios xazo sto pos doulebei :P
Exoume eva imagaki to opoio to kavoume background se eva division
kai me to javascript mikrevoume to platos tou . Ka8os mikrevei afto
sirikvovete pros ta aristera kai xavete to deksi meros (apo ta deksia
pros ta aristera)

exei bebea merika bugs n oli diadikasia alla eivai n proti version
kai apla tnv kavw post va iparxei :)

Afta ta oliga :)

Please ama to xrisimopiisete afiste to copyright

Κώδικας: Επιλογή όλων

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http&#58;//www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-7">
<title>Logout + progress bar  -- By Rapid-eraser</title>
<style type="text/css">
<!--
body &#123;
	background-color&#58; #BCBCBC;
&#125;


#progressBarMsg &#123;
	position&#58;absolute;
	top&#58;0px;
	left&#58;0px;
	width&#58;200px;
	height&#58;15px;
	font-family&#58;verdana;
	font-weight&#58;bold;
	color&#58;black;
	text-align&#58;center;
	font-size&#58; 10px;
	font-style&#58; normal;
	padding-top&#58; 1px;
	padding-right&#58; 0px;
	padding-bottom&#58; 0px;
	padding-left&#58; 0px;
&#125;

#outerBoxHolder &#123;
	position&#58;relative;
	width&#58;200px;
	height&#58;15px;
	padding&#58;0px;
	border-top&#58;1px solid #000000;
	border-bottom&#58;1px solid #000000;
&#125;

#backgroundProgress &#123;
	background-image&#58; url&#40;'gradient.gif'&#41;;
	background-repeat&#58; no-repeat;
	padding&#58; 0px;
	height&#58; 15px;
	width&#58; 200px;
	border&#58; 0px 0 0;
&#125;

-->
</style>
<script language="JavaScript">
<!--
/*
Logout & progress bar count down
By Rapid-eraser 2004 - 2005
Email&#58; rapid -at- datahost -.- gr
*/

function fixMail&#40;link&#41; &#123;
          link.href = 'mailto&#58;' + 'nospam@datahost.gr'.replace&#40;/nospam/, 'rapid'&#41;
        &#125;
		
var countDownVal , countDownTime

function countDown&#40;step , extfixed&#41;&#123;
  countDownTime--;
  var BarWidth = parseInt&#40;document.getElementById&#40;"backgroundProgress"&#41;.offsetWidth&#41;;
  
  ///////////////////////////////////////// show output
      if &#40;document.getElementById&#41;&#123;
          document.getElementById&#40;"countDownText"&#41;.innerHTML = formatme&#40;countDownTime&#41;;


       /// modify progressbar
	   
	   
	if&#40;BarWidth > 0&#41;&#123; 
	BarWidth -= step;
	document.getElementById&#40;"progressBarMsg"&#41;.innerHTML = Math.floor&#40;&#40; BarWidth / extfixed&#41;*100&#41; + "%";
	document.getElementById&#40;"backgroundProgress"&#41;.style.width = BarWidth + "px"; 
	&#125;

                                   &#125;

  ///////////////////////////////////////// what to do in time
                 if &#40; countDownTime <=0 &#41;&#123;
                                        alert&#40;'Exete kanei logout apo to sistima logo adravias'&#41;;
                                        //countDownTime = countDownVal;
                                        clearTimeout&#40;counter&#41;;
                                        window.location.reload&#40;&#41;;
                                        return false;
                                         &#125;


  /////////////////////////////// counter continue &#58;&#41;
        counter = setTimeout&#40; function&#40;&#41;&#123; countDown&#40;step,extfixed&#41;; &#125;, 1000&#41;;

                                          &#125; // countDown&#40;&#41;


 function formatme&#40;num&#41;&#123;
                         var hours = -1 , mins = 0 , secs = 0;
						 
  mins =  parseInt&#40;num / 60&#41;;
  secs = parseInt&#40;num % 60&#41;;

  if&#40;mins<10&#41; mins ='0'+mins;
  if&#40;secs<10&#41; secs ='0'+secs;

                               return mins.toString&#40;&#41; + '&#58;' + secs.toString&#40;&#41;;
 &#125;


 function startit&#40;countDownVal&#41;&#123;
    countDownTime = countDownVal ;
	          if &#40;document.getElementById&#41;&#123; // I can start !!!
                           document.write&#40;'<b id="countDownText">'+formatme&#40;countDownTime&#41;+'</b>'+
        								   '<div id="outerBoxHolder"><div id="backgroundProgress"></div><div id="progressBarMsg">100%</div></div>'&#41;;
											
						var extfixed = parseInt&#40;document.getElementById&#40;"backgroundProgress"&#41;.offsetWidth&#41;;
						var steps = Math.round&#40; &#40; extfixed / countDownVal &#41; * 1000&#41; / 1000;
										
										countDown&#40;steps,extfixed&#41;;
                                                           &#125;

                          &#125;
						  						  
</script>
</head>
<body>
Refresh in&#58; <script language="JavaScript">startit&#40;30&#41;;</script><br>
<a href="" onClick="fixMail&#40;this&#41;" onMouseOver="fixMail&#40;this&#41;">By Rapid-eraser</a>
</body>
</html>
8elw va efxaristiso tov Ghostship + Skeftomilos gia ta script tous pou sta8ikav odigoi stnv eos twra poria mou stnv javascript
Συνημμένα
gradient.gif
To arxeio pou xrisimopiw sto script gia va dimiourgiso to gradient effe
gradient.gif (1.23 KiB) Προβλήθηκε 1855 φορές
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Cmg__
Δημοσιεύσεις: 1710
Εγγραφή: 29 Μαρ 2005 22:40

logout time out :) to protomou javascript

Δημοσίευση από Cmg__ » 09 Ιουν 2005 15:21

Poly kalos
alla poly megalos o kwdikas!
Mpravo! (kai egw thelw na mathw na grafw :cry: )

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

logout time out :) to protomou javascript

Δημοσίευση από skeftomilos » 09 Ιουν 2005 17:02

Very good Mr Rapid! :)

Αν επιτρέπεις να βαθμολογήσω το πρόγραμμα, χάνει ένα πόντο λόγω χρήσης της document.write(). Δουλεύει μεν, αλλά είναι κατά γενική ομολογία άσχημη μέθοδος (ugly, googly!) και δεν είναι XHMTL συμβατή. Χάνει άλλο ένα πόντο γιατί ξεκινά το loop πριν το φόρτωμα της σελίδας. Σε ορισμένους browsers δεν αρέσει η κλήση της document.getElementById() πριν ολοκληρωθεί η κατασκευή του DOM tree, και μπορεί να παρουσιάσουν απρόβλεπτη συμπεριφορά. Καλύτερο είναι να ξεκινά το loop στο συμβάν window.onload.

Επίσης το πρόγραμμα δεν είναι object oriented, αλλά δε χάνει πόντους γι αυτό γιατί είναι θέμα γούστου. Για παράδειγμα η ρουτίνα formatme() θα μπορούσε να γίνει μέθοδος του αντικειμένου Number:

Κώδικας: Επιλογή όλων

Number.prototype.toTimeString = function&#40;&#41; &#123;
  var mins = Math.floor&#40;this / 60&#41;.toString&#40;&#41;
  var secs = Math.floor&#40;this % 60&#41;.toString&#40;&#41;
  while &#40;mins.length < 2&#41; mins = '0' + mins
  while &#40;secs.length < 2&#41; secs = '0' + secs
  return mins + '&#58;' + secs
&#125;
Η έκφραση (666).toTimeString() επιστρέφει 11:06

Μία κομψότερη λύση είναι η εξής:

Κώδικας: Επιλογή όλων

Number.prototype.toZeroPaddedString = function&#40;length&#41; &#123;
  var s = this.toString&#40;&#41;
  while &#40;s.length < length&#41; s = '0' + s
  return s
&#125;

Number.prototype.toTimeString = function&#40;&#41; &#123;
  var d = new Date&#40;0, 0, 0, 0, 0, this, 0&#41;
  return d.getMinutes&#40;&#41;.toZeroPaddedString&#40;2&#41; + "&#58;" + d.getSeconds&#40;&#41;.toZeroPaddedString&#40;2&#41;
&#125;
Επίσης θέμα γούστου είναι η χρήση του statement terminator χαρακτήρα ; (semicolon). Οι περισσότεροι λένε ότι πρέπει να μπαίνει.
Douglas Crockford έγραψε:One of the mistakes in the language is semicolon insertion. This is a technique for making semicolons optional as statement terminators. It is reasonable for IDEs and shell programs to do semicolon insertion. It is not reasonable for the language definition to require compilers to do it. Use semicolons. (A Survey of the JavaScript Programming Language)
Προσωπικά ποτέ δε βάζω semicolons και μέχρι στιγμής δε μου έχει συμβεί κάτι κακό. Λιγότερη φθορά για το πληκτρολόγιο και πιο καθαρός κώδικας. :)
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

logout time out :) to protomou javascript

Δημοσίευση από Rapid-eraser » 09 Ιουν 2005 17:17

afto me to document.getElementById to paratirisa kai egw
giafto avagkastika va balw to document.write giati dev doulebe diaforetika
arviotave pismatika va to dei opote avagkastika va to tiposo priv to kaleso :P
gia va eimai sigouros oti 8a to dei. Fisika me to onload profavos eivai pio
omali periptosi ka8os mporw va kavoviso pou 8a to topo8etiso xoris
va perimevo va to tiposo apo javascipt (kai kata sivepia va to tropopiw pio efkola kata tnv kataskebi tou me to ide)
Opote 8a to tropopiisw simfova me tis ipodikseis sou .

to break line to bazo dioti to background mou eivai apo php kai perl kai ekei eivai kirio sistatiko :P

osov afora to OO arxika skeftika va to kavw alla n gvoseis mou sta avtikimeva tis javascript dev eivai kai idietera divata ... oso proxoraw sta tutorial 8a to metatrepso eivai sigoura pio boliko gia tnv dedomevi periptosi

thanks gia tis dior8oseis/ipodikseis :)

I'll be back :P
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

logout time out :) to protomou javascript

Δημοσίευση από Rapid-eraser » 10 Ιουν 2005 23:51

lipov ekava kapoies pros8ikes simfova me tis ipodikseis tou skeftomilou
kai dior8osa kapoia bugs opos afto pou tou limit sta 399 sec.
To bug afto dimiourgi8ike giati ekava prakseis me basi to width tou image
to opoio ntav se akereo ari8mo kai egw ekava se float
pargma pou dev ntav sosto. etsi perasa alli mia metabliti gia va kavw
prakseis se afti kai va kavw casscade to apotelesma mesa stnv function.
LIVE DEMO

Κώδικας: Επιλογή όλων

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http&#58;//www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-7">
<title>Logout + progress bar  -- By Rapid-eraser</title>
<style type="text/css">
<!--
body &#123;
	background-color&#58; #BCBCBC;
&#125;


#progressBarMsg &#123;
	position&#58;absolute;
	top&#58;0px;
	left&#58;0px;
	width&#58;200px;
	height&#58;15px;
	font-family&#58;verdana;
	font-weight&#58;bold;
	color&#58;#292929;
	font-size&#58;9pt;
	text-align&#58;center;
	padding-top&#58; 1px;
	padding-right&#58; 0px;
	padding-bottom&#58; 0px;
	padding-left&#58; 0px;
&#125;

#outerBoxHolder &#123;
	position&#58;relative;
	width&#58;200px;
	height&#58;15px;
	padding&#58;0px;
	border-top&#58;1px solid #000000;
	border-bottom&#58;1px solid #000000;
&#125;

#backgroundProgress &#123;
	position&#58;absolute;
	top&#58;0px;
	left&#58;0px;
	width&#58;200px;
	height&#58;15px;
	background-image&#58;url&#40;"gradient.gif"&#41;;
	background-repeat&#58;no-repeat;
&#125;

-->
</style>
<script language="JavaScript">
<!--
/*
Logout & progress bar count down
By Rapid-eraser 2004 - 2005
Email&#58; rapid -at- datahost -.- gr
*/
function fixMail&#40;link&#41; &#123;
          link.href = 'mailto&#58;' + 'nospam@datahost.gr'.replace&#40;/nospam/, 'rapid'&#41;
        &#125;
		
var countDownVal = 300 , widthext = 0;

function countDown&#40;step , extfixed , widthext&#41;&#123;
  countDownVal--;
    
  ///////////////////////////////////////// show output
          document.getElementById&#40;"countDownText"&#41;.innerHTML = formatme&#40;countDownVal&#41;;

       /// modify progressbar
	 if&#40;widthext > 0&#41;&#123; 

    	widthext -= step;
	    widthext = Math.ceil&#40;widthext*1000&#41;/1000;
	
	if&#40;widthext < step&#41; widthext = 0;
	
		var ps = Math.floor&#40;&#40; widthext / extfixed&#41;*100&#41; + "%";
		  if&#40; document.getElementById&#40;"progressBarMsg"&#41;.innerHTML != ps&#41; 
                   document.getElementById&#40;"progressBarMsg"&#41;.innerHTML = ps;
		var px = Math.floor&#40;widthext&#41; + "px";
		  if&#40; document.getElementById&#40;"backgroundProgress"&#41;.style.width != px&#41;
                   document.getElementById&#40;"backgroundProgress"&#41;.style.width = px;
	  
	&#125;

  ///////////////////////////////////////// what to do in time
            if &#40; countDownVal <=0 &#41;&#123;
                       alert&#40;'Exete kanei logout apo to sistima logo adravias'&#41;;
                       //countDownVal = countDownVal;
                       clearTimeout&#40;counter&#41;;
                       window.location.reload&#40;&#41;;
                       return false;
                                    &#125;


  /////////////////////////////// counter continue &#58;&#41;
    counter = setTimeout&#40; function&#40;&#41;&#123; countDown&#40;step,extfixed,widthext&#41;; &#125;, 1000&#41;;

  &#125; // countDown&#40;&#41;


 function formatme&#40;num&#41;&#123;
   var mins = 0 , secs = 0;
						 
  mins =  parseInt&#40;num / 60&#41;;
  secs = parseInt&#40;num % 60&#41;;

  if&#40;mins<10&#41; mins ='0'+mins;
  if&#40;secs<10&#41; secs ='0'+secs;

       return mins.toString&#40;&#41; + '&#58;' + secs.toString&#40;&#41;;
 &#125;


 window.onload = function&#40;&#41;&#123;
  	          if &#40;document.getElementById&#41;&#123; // I can start !!!
                    document.getElementById&#40;"countDownText"&#41;.innerHTML = formatme&#40;countDownVal&#41;; 											
                     var extfixed = parseInt&#40;document.getElementById&#40;"backgroundProgress"&#41;.offsetWidth&#41;;
                     var steps = Math.round&#40; &#40; extfixed / countDownVal &#41; * 1000&#41; / 1000;
                      countDown&#40;steps,extfixed,extfixed&#41;;
                                                           &#125;

                          &#125;
						
</script>
</head>
<body>
Refresh in&#58; <strong><span id="countDownText"></span></strong>
 <div id="outerBoxHolder">
   <div id="backgroundProgress"></div>
   <div id="progressBarMsg">100%</div>
 </div>
<br>
<a href="" onClick="fixMail&#40;this&#41;" onMouseOver="fixMail&#40;this&#41;">By Rapid-eraser</a>
</body>
</html>
Episis ekava kapies dior8oseis sto pos bgevei o kodikas ekso me ta rounding gia va bgevei pio omala :) afta ta oliga
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Άβαταρ μέλους
skeftomilos
Script Master
Δημοσιεύσεις: 2888
Εγγραφή: 07 Ιαν 2005 07:22
Τοποθεσία: Αθήνα

logout time out :) to protomou javascript

Δημοσίευση από skeftomilos » 11 Ιουν 2005 13:12

Μικροσκοπική παρατήρηση. Οι παρακάτω CSS κανόνες:

Κώδικας: Επιλογή όλων

padding-top&#58; 1px;
padding-right&#58; 0px;
padding-bottom&#58; 0px;
padding-left&#58; 0px;
μπορούν να γραφούν σε μία γραμμή:

Κώδικας: Επιλογή όλων

padding&#58; 1px 0px 0px 0px;
Η παράμετροι ακολουθούν τη φορά των δεικτών του ρολογιού, δηλαδή πάνω, δεξιά, κάτω και αριστερά. Ακόμα πιο σύντομη είναι η παρακάτω:

Κώδικας: Επιλογή όλων

padding&#58; 1px 0px 0px;
Αφού λείπει το αριστερό σημαίνει ότι είναι ίδιο με το δεξί, δηλαδή 0px.
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης