Προς το περιεχόμενο

Ερώτηση jscript


ra62

Προτεινόμενες αναρτήσεις

Δημοσ.

Έχω τον παρακάτω κώδικα για να γράφω στο status bar του browser:

 

<!--

var i=0;

var msg="Testing";

function playtext()

{

setTimeout("playtext()",100);

window.status=msg.substring(i,msg.length)+msg.substring(0, i)

if (i++==msg.length)i=0;

}

playtext();

//-->

 

είναι javascript γραμμένο σε αρχείο και το καλώ στο <head> του html αρχείου. Το προβλημά μου είναι ότι θέλω να σταματάει να εμφανίζεται όταν το συγκεκριμένο παράθυρο είναι ανενεργό. Αυτό κυρίως για tabbed browsers γιατί είναι σπαστικό να εμφανίζει το συγκεκριμένο μήνυμα όταν έισαι σε άσχετη σελίδα.

Λογικά θέλει κάποιον έλεγχο με attachEvent. Εχω λιώσει αρκετά αλλά δεν τα έχω καταφέρει.

Δημοσ.

Λογικά αυτό που χρειάζεσαι είναι το συμβάν window.onblur. Σου προτείνω όμως κάτι καλύτερο: πάψε να παιδεύεσαι με το συγκεκριμένο πρόβλημα. Η αλλαγή του περιεχομένου της status bar ανήκει στις γκρίζες περιοχές τους scripting, με τους περισσότερους χρήστες να ενοχλούνται ή να νομίζουν ότι κάποιος προσπαθεί να τους παραπλανήσει. Προσωπικά έχω πάψει να ενοχλούμαι από ανάλογα scripts, καθώς χρησιμοποιώ Firefox που μου επιτρέπει να τα μπλοκάρω:

 

Advanced_JavaScript_Options.png

 

Ανάλογη επιλογή έχει και ο Opera. :)

Δημοσ.

και εγώ firefox χρησιμοποιώ, δε με ενοχλεί η αλλαγή του status bar εκτός και

αν το script είναι πολύ βαρύ (οποιδήποτε τέτοιο script σε ενοχλεί).

Η εξέλιξη του κώδικα είναι αυτή :

>
   <!--
     var i=0;
     var msg="";
     var m1="      word1";
     var m2="      word2";
     var m3="      word3";
     var m4="      word4";
     var m5="      word5";
     var m6="      word6";
     var m7="      word7";
     var m8="                                                                         ";
          
          
     function playtext()
     {
     		//if(Event.FOCUS==4096){		
       		setTimeout("playtext()",100);
		window.status=msg.substring(i,msg.length)+msg.substring(0, i);
		if (i++==msg.length)i=0;
	//}
	
     }
     function clear(){
     		//if(Event.BLUR==8192) {
     			setTimeout("clear()",100);
     			window.status=' ';
     		//}
     		
     }
     
     msg=m1+m2+m3+m4+m5+m6+m7+m8;
     window.captureEvents(Event.FOCUS | Event.BLUR);
     window.onfocus=playtext;
     window.onblur=clear;
     //-->

 

το Event.BLUR είναι ίσο με 8192 όταν ισχύει το blur

αντίστοιχα και για το Event.FOCUS, όμως δε φαίνεται να δουλεύει

σωστά.

Παρατήρησα ότι όσο περισσότερες φορές ενεργοποιούσα και απενεργοποιούσα

το παράθυρο τόσο πιο γρήγορα κινούνταν το μήνυμα.

 

Λίγη βοήθεια εδώ βρε παιδιά :???:

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...