Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    489

    comportamenti differenti tra ff e IE

    Ciao a tutti!

    ho la seguente pagina:

    codice:
    <html>
    <head>
    <script  LANGUAGE="JAVASCRIPT">
    
    
    
    function doStuff() 
    {  
    // does something when mouse is down in body for longer than 2 seconds
    alert("2 secs passed");
    }
    function clicked()
    {
    var mousedownTimeout;
    document.body.onmousedown = function() 
    {   
    mousedownTimeout = window.setTimeout(doStuff, 2000);
    }
    document.body.onmouseup = function() {
    window.clearTimeout(mousedownTimeout);
    alert("less then 2 secs passed");
    }
    }
    
    </script>
    
    </head>
    <body>
    
    [img]img.jpg[/img]
    </body>
    </html>
    questo codice mi crea i seguenti problemi:

    sia in firefox che in internet explorer devo aver cliccato almeno una volta sull immagine per farlo funzionare.

    in internet explorer dopo che ho cliccato una volta sull immagine posso cliccare OVUNQUE nella pagina e la funzione viene eseguita. cio é sbagliato, deve essere eseguita SOLO se clicco sull immagine.

    potete gentilmente aiutarmi a risolvere questi due problemi?

    grazie

    Igor

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    489
    ho risolto il primo dei due problemi, cioé che non sono obbligato a cliccarci una prima volta.

    resta peró il secondo problema. cerco di spiegarmi un po meglio.

    se apro la pagina e clicco a caso nel background non succede nulla, (giusto)
    clicco sull immagine e si apre l allert (giusto)
    clicco nel background e si apre l alert (sbagliato)

    cioé dopo che é stata eseguita la funzione una prima votla é come se continuasse a monitorare il mouse.

    qualche consiglio?

    grazie

    ciao

    igor

  3. #3
    Esattamente, cosa vorresti che facesse lo script?

    Ora come ora, la funzione clicked aggiunge al body gli eventi onmousedown e onmouseup.
    la funzione per levento onmousedown fa scattare un timer che alla scadenza chiama la doStuff() e fa apparire l'alert che sono passati 2 secondi.
    la funzione onmouseup interrompe il timer e segnala che NON sono passati i due secondi.
    tutto qua.

    Tu dici che &egrave; sbagliato:

    clicco nel background e si apre l alert (sbagliato)

    ma, le funzioni sono 'attaccate' a eventi del body, quindi..
    poi dici 'clicco' ma, in questo caso, dovresti parlare di:
    "premo il pulsante del mouse, lo tengo premuto e, se lo rilascio prima che siano passati 2 secondi succede una cosa, se lo rilascio dopo ne succede un'altra".

    Cerca di spiegare meglio ci&ograve; che vuoi che succeda...

    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    489
    ciao!

    vorrei facesse esattamente quello che gia fa, ma SOLO quando clicco sull immagine.

    vorrei semplicemente che se clicco sull immagine per meno di due secondi mi si apre l alert che mi dice che ho cliccato meno di due secodni, se clicco piu a lungo appare l altro allert.

    grazie

    ciao

    igor

  5. #5
    Ti&egrave; !
    Codice PHP:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <
    html>
    <
    head>
    <
    script type="text/javascript">

    var 
    mousedownTimeout// messa fuori, globale

    function doStuff() 
    {  
    // does something when mouse is down in image for longer than 2 seconds
        
    alert("2 secs passed");
        
    // metto mousedownTimeout a false in modo che quando si rilascia il bottone
        // non faccia apparire l'alert 'less than 2 seconds passed'
        
    mousedownTimeout  false
    }
    function 
    clicked() {
        
    document.getElementById("immagine").onmousedown = function() {   
            
    mousedownTimeout window.setTimeout(doStuff2000);
        }
        
    document.getElementById("immagine").onmouseup = function() {
            if (
    mousedownTimeout != false) {
                
    window.clearTimeout(mousedownTimeout);
                
    alert("less than 2 secs passed");
            }
        }
    }
    window.onload=clicked;
    </script>

    </head>
    <body>

    [img]img.jpg[/img]
    </body>
    </html> 
    Migliorabile, in ogni caso!
    P.S: non usare parole riservate per gli id: si sa mai che qualche browser faccia confusione!
    (avevi scritto img id="img" ...

    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    489
    mitico!

    grazie mille!

  7. #7
    prego cento!
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

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 © 2025 vBulletin Solutions, Inc. All rights reserved.