
Originariamente inviata da
ciupaz
Sulla pagina del <dialog> ci sono un paio di esempi
Se intendi questa pagina live demo, gli esempi fanno più o meno ciò che hai tu.
Qui lo script del codice sorgente:
codice:
//using yield
document.getElementById('button1').addEventListener('click', function() {
spawn(function*() {
var ret = yield window.showModalDialog("demo-modal.html", "some argument", "dialogWidth:500px;dialogHeight:200px");
document.getElementById('result1').innerText = "Returned from modal: " + ret;
});
});
//using async/await
document.getElementById('button2').addEventListener('click', async function() {
var ret = await window.showModalDialog("demo-modal.html", "some argument", "dialogWidth:500px;dialogHeight:200px");
document.getElementById('result2').innerText = "Returned from modal: " + ret;
});
//using eval
document.getElementById('button3').addEventListener('click', function() {
var ret = window.showModalDialog("demo-modal.html", "some argument", "dialogWidth:500px;dialogHeight:200px");
document.getElementById('result3').innerText = "Returned from modal: " + ret;
});
Il click è applicato con addEventListener ma è equiparabile all'uso del metodo o attributo onclick, come nel tuo caso.
La funzione applicata all'evento è anonima ma è equiparabile all'uso di una funzione nominata, come nel tuo caso.
A mio parere il tuo click richiama perfettamente quella funzione e apre correttamente il modal, tant'è che la pagina esterna viene aperta, da quel che hai indicato. A questo punto il problema è relativo forse a qualcosa che sta nella pagina esterna 
Senza poter verificare direttamente, mi viene difficile capire cosa sta andando storto, ma puoi fare tu qualche verifica.
Contralla intanto che nella console del tuo browser (F12 per aprirla) non salti fuori qualche errore di script, in particolare dopo che clicchi per aprire la pagina.
Se non ci sono errori puoi verificare cosa viene restituito alla tua variabile result, dato che il sistema resta in attesa finché quella variabile non viene valorizzata. Per cui, dopo la riga della variabile result e prima della condizione, puoi mettere un log in questo modo:
codice:
console.log('risposta:', result);
Con la console aperta, verifica quindi quando viene eseguito questo log e cosa ti restituisce.