Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Sapere se una finestra è a fuoco

    Ciao,
    per verificare se una finestra è a fuoco, ho scritto le seguenti righe:

    Codice PHP:

    <script type="text/javascript">
    <!--
    var 
    windowFocus true;

    window.onblur = function() {
        
    windowFocus false;
        
    document.getElementById('a').innerHTML windowFocus.toString();
    }
    window.onfocus = function() {
        
    windowFocus true;
        
    document.getElementById('a').innerHTML windowFocus.toString();
    }
    //-->
    </script>

    <div id="a"></div> 
    Sostanzialmente mi serve di sapere se una finestra è a fuoco o no, ma non esistendo una proprietà che mi dica questo stato, creo la variabile globale windowFocus che viene sovrascritta dalle funzioni eseguite a runtime dai gestori di eventi onblur e onfocus.
    È corretto?
    Quali controindicazioni?

    Con Firefox funziona quasi sempre, con IE no.
    Di cosa ha bisogno IE per funzionare?
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  2. #2
    up
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  3. #3
    Per IE si risolve passando l'evento come argomento della funzione:

    codice:
    <script type="text/javascript">
    <!--
    var windowFocus = true;
    
    window.onblur = function(e) {
    	e = e || window.event;
    	windowFocus = false;
    	document.getElementById('a').innerHTML = windowFocus.toString();
    }
    window.onfocus = function(e) {
    	e = e || window.event;
    	windowFocus = true;
    	document.getElementById('a').innerHTML = windowFocus.toString();
    }
    //-->
    </script>
    
    <div id="a"></div>
    Questo fa sì che la funzione lavori correttamente sull'onblur, ma non sul focus: IE infatti fa scattare la funzione legata al gestore onfocus solo se viene messo a fuoco il body (tramite click del mouse o pressione del tasto tab), non la finestra...

    Come posso risolvere questa imprecisione di IE?
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

  4. #4
    Il comportamento di IE è effettivamente un bug, di cui si ha traccia nella documentazione ufficiale Microsoft:

    http://support.microsoft.com/kb/888169/

    SYMPTOMS
    The Microsoft JScript onFocus event does not occur when the IESample browser window receives focus.
    This problem occurs when an HTML page uses the onFocus event in the document body.
    La verità è più triste di quanto affermi questo bug report: il malfunzionamento infatti non si verifica solo innestando l'handler onfocus nel tag body, ma anche quando è definito nello script tra i tag HEAD con window.onfocus

    Altri suggerimenti sono sempre bene accetti :ignore:
    Emanuele DG
    <?php echo "Proverbio zen(d): vivi ogni giorno come se fosse il ".date('d M Y', time()); ?>
    Intellectual property

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.