Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    intercettare evento apertura finestra di download

    In una pagina ho un normale pulsante di submit.
    Quando premo sul pulsante, il server produce un file compresso e lo salva sul disco.
    Dopo di che questo file viene restituito al browser impostando il ContentType = "application/octet-stream".
    Questo fa sì che il browser apra la finestra "apri file o salva su disco".

    Il problema è che vorrei, alla pressione del pulsante, far comparire un messaggio di attesa, per poi farlo scomparire quando comparare la finestra "apri file o salva su disco".

    Per la prima parte, nessun problema. Il problema è la seconda parte, ossia, a che evento legare il comando per far scomparire il messaggio.

    Se non fosse possibile in maniera così diretta, mi piacerebbe qualche altro consiglio, magari anche lato server (in pseudo codice per non andare nei dettagli)
    Pietro

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Il download non e' gestito dal browser, che informa soltanto il S.O. sulla natura del file in arrivo..., ed il S.O. nel gestire il download (con un processo separato ed indipendente) non restituisce nessun evento o avviso o resoconto al browser, cosi' come non lo avvisa di una eventuale rinuncia o fallimento.

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da br1
    Il download non e' gestito dal browser, che informa soltanto il S.O. sulla natura del file in arrivo..., ed il S.O. nel gestire il download (con un processo separato ed indipendente) non restituisce nessun evento o avviso o resoconto al browser, cosi' come non lo avvisa di una eventuale rinuncia o fallimento.

    ciao
    :master: In effetti non lo sapevo. Allora ho aggirato il problema.
    Il pulsante, invece di fare il submit al server, usa ajax per dare il comando al server di creare il file compresso. Se il ritorno è andato a buon fine, faccio il submit al server per ottenere il download.
    Con FF e Opera funziona bene; mentre IE7 non fa partire il download in automatico. Per ovviare a questo rendo visibile il link che fa: Se il download non dovesse partire, fare click sul link

    il codice minimale che ho usato è:
    codice:
    function Button2_onclick() 
    {
        $("span1").style.visibility = "visible";//Prego attendere...
        $("LinkButton1").style.display = "none";//link da premere se il donwload non dovesse partire
        ajax("?comando_ajax=1", onload, null, onerror);//comando al server di generare il file zip
        function onload()
        {
            $("span1").style.visibility = "hidden";//nascondo Prego attendere...
            var t = this.request.responseText;
            if(t == "ok")//se il file zip è generato senza errori...
            {
                $("LinkButton1").style.display = "";//rendo visibile il link da premere se il donwload non dovesse partire
                $("LinkButton1").click();//comando al server di fare il download del file zip
            }
        }
        function onerror()
        {//in caso di errore mostro il messaggio predefinito
            $("span1").style.visibility = "hidden";
            this.defaultError();
        }
    }
    ciao
    Pietro

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.