Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di ciupaz
    Registrato dal
    Dec 2000
    residenza
    Milano
    Messaggi
    848

    window.showModalDialog non funziona con Edge/Chrome

    Ciao a tutti,
    in una vecchia applicazione ASP.NET WebForms ho una pagina aspx con un pulsante che dovrebbe fare aprire un popup (con all'interno un'altra pagina aspx) dove l'utente inserisce dei dati.
    La funzione JavaScript richiamata e' questa:

    function ChoosePharmacy()
    {
    var result = window.showModalDialog('search_pharmacy.aspx',wind ow,"dialogWidth:800px;dialogHeight:600px;scroll: no;")


    if (result!=null)


    document.getElementById('hIdPharmacy').value=resul t;
    }

    Il problema e' che funziona solo con Internet Explore, ed ora, che questo browser e' stato decommissionato, non funziona piu' con Edge o Chrome.

    Qualcuno sa come si può rimpiazzare il showModalDialog?

    Avevo provato con open
    apre sì il popup, ma la pagina sottostante, invece di rimanere, ridiventa la pagina di login del sito.

    Grazie a chi potrà darmi un aiuto.

    Luigi

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,690
    Ciao, non ho mai avuto a che fare col deprecato showModalDialog() ma, da quel che ho letto, funzionava come un modal interrompendo l'esecuzione dello script in attesa di una risposta, mentre open() apre una risorsa esterna ma lo script prosegue comunque nella sua esecuzione, come tu stesso hai constatato.

    Non ho una specifica soluzione da dare ma posso giusto suggerire di fare qualche ricerca del tipo "showmodaldialog alternative".
    Vedo che in genere viene consigliato l'uso di <dialog> (HTML5) ed eventuali polyfill.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Utente di HTML.it L'avatar di ciupaz
    Registrato dal
    Dec 2000
    residenza
    Milano
    Messaggi
    848
    Nell'esempio del polyfill c'e' questo script di esempio:

    spawn(function*() {


    //statements before showing a modal dialog


    var returnValue = yield window.showModalDialog( url [, arguments, options] );


    //statements after closing a modal dialog


    });

    ma non saprei come inglobarlo nella mia funzione.

    Qua il link:
    https://github.com/niutech/showModalDialog
    Ultima modifica di ciupaz; 06-10-2022 a 11:28

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,690
    Non ho provato ma la cosa più logica, a mio parere, è inserire lo script dentro la tua funzione ChoosePharmacy già esistente. Chiaramente dovrai riportare i dati relativi alla pagina da aprire, modificando opportunamente lo script di esempio.

    Hai fatto qualche prova? Che risultati ottieni?


    PS: sei un veterano di questo forum, scusami se te lo dico ma sarebbe bello se tu usassi gli opportuni tag di formattazione quando posti del codice, così che la discussione sia più facile da leggere.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Utente di HTML.it L'avatar di ciupaz
    Registrato dal
    Dec 2000
    residenza
    Milano
    Messaggi
    848
    Con l'open() il popup appare, ma la pagina sottostante non rimane, e si viene rimandati al login (o ad una pagina di errore).

    Mettendo:

    codice:
    <script src="https://unpkg.com/showmodaldialog"></script>
    e lasciando il showModalDialog, il popup appare e scompare dopo 2 secondi.

    Un bel mistero.

  6. #6
    Utente di HTML.it L'avatar di ciupaz
    Registrato dal
    Dec 2000
    residenza
    Milano
    Messaggi
    848
    Ho modificato cosi:

    codice:
    function ChoosePharmacy()
    {
        spawn(function*() {
    
    
        var result = yield window.showModalDialog('search_pharmacy.aspx',window,"dialogWidth:800px;dialogHeight:600px;scroll: no;")
    
    
        if (result!=null)
    
    
            document.getElementById('hIdPharmacy').value=result;
    
    
    });
    
    
    }
    il popup appare, la pagina sottostante rimane correttamente, ma il popup si richiude automaticamente dopo un paio di secondi.

    In cosa sbaglio?

  7. #7
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,690
    Quote Originariamente inviata da ciupaz
    Con l'open() il popup appare, ma la pagina sottostante non rimane, e si viene rimandati al login (o ad una pagina di errore).
    Come già detto, open() (a differenza di una finestra di tipo modale) non interrompe l'esecuzione dello script attendendo una risposta; per tale motivo, la condizione che sta dopo quella riga, non viene verificata nel modo corretto ma sarà eseguito comunque l'eventuale resto dello script per il quale, presumo, avvenga ciò che hai indicato.

    Quote Originariamente inviata da ciupaz
    ma il popup si richiude automaticamente dopo un paio di secondi.
    Personalmente non so dirti. Difficile capire cosa sta avvenendo senza poter verificare cosa succede in quella pagina.

    Se il tuo elaborato è accessibile pubblicamente online, prova a postare il link, così da poter verificare direttamente.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  8. #8
    Utente di HTML.it L'avatar di ciupaz
    Registrato dal
    Dec 2000
    residenza
    Milano
    Messaggi
    848
    Eh, purtroppo è utilizzata in una intranet aziendale, non è esposta all'esterno.
    Di reinstallare Internet Explorer, mi hanno dato anche picche.
    Un bel problema.

  9. #9
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,690
    Quote Originariamente inviata da ciupaz
    Un bel problema.
    difficile aiutarti senza poter verificare direttamente.

    hai provato ad usare le altre sintassi proposte per quel polyfill?
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  10. #10
    Utente di HTML.it L'avatar di ciupaz
    Registrato dal
    Dec 2000
    residenza
    Milano
    Messaggi
    848
    Ora non ho accesso al server.
    Ho preparato gli script per le altre 2 sintassi.
    Sarebbero sintatticamente corrette scritte in questo modo?

    codice:
    function ChoosePharmacy()
    {
    
    
    (async function() {
    
    
        //statements before showing a modal dialog
    
    
        var result = window.showModalDialog('search_pharmacy.aspx',window,"dialogWidth:800px;dialogHeight:600px;scroll: no;")
    
    
        if (result!=null)
    
    
            document.getElementById('hIdPharmacy').value=result;
    
    
        //statements after closing a modal dialog
    
    
    })();
    }

    e

    codice:
    function ChoosePharmacy()
    {
    
    
    (function() {
    
    
        //statements before showing a modal dialog
    
    
        var result = window.showModalDialog('search_pharmacy.aspx',window,"dialogWidth:800px;dialogHeight:600px;scroll: no;")
    
    
        if (result!=null)
    
    
            document.getElementById('hIdPharmacy').value=result;
    
    
        //statements after closing a modal dialog
    
    
    })();
    }
    La mia funzione di partenza è la solita qua sotto:

    codice:
    function ChoosePharmacy()
    {
        var result = window.showModalDialog('search_pharmacy.aspx',window,"dialogWidth:800px;dialogHeight:600px;scroll: no;")
    
    
        if (result!=null)
    
    
            document.getElementById('hIdPharmacy').value=result;
    
    
    }

    che è agganciata al OnClick() del button.

Tag per questa discussione

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