Chiamate javascript cross domain

di il
1 risposte

Chiamate javascript cross domain

Ciao a tutti
Qualcuno ha esperienza di chiamate cross domain?

Io devo riuscire a invocare una funzione javascript su una webapp che sta sotto un dominio differente dalla mia.
In pratica la mia webapp ha un iframe, all'interno del quale ho una seconda webapp nella quale devo richiamare una funzione js definita al suo interno.

Questa chiamata, se gli applicativi fossero nello stesso dominio funziona
document.getElementById('nurse_iframe').contentWindow.document.getElementById('CBNonAttivoImg_selReparto').click();

Avete mai avuto questa esigenza?
Mi stavo studiando un po' JSONP, ma da quanto sto vedendo mi sembra che serva più per recuperare dati da applicazioni su domini differenti che al mio scopo.

grazie mille

1 Risposte

  • Re: Chiamate javascript cross domain

    Ho risolto così, definendo le seguenti funzioni nei due applicativi

    Applicativo chiamante
    <script  language='javascript'>
    //chiamata al click di un button
    function test()
         {
             var win = document.getElementById('iframe').contentWindow;
    
             if (win == null || !window['postMessage'])
                 alert("windows error");
             else
                 win.postMessage("hello", "*");
         }
    
    
    // funzione di callback
         function receiveMessage(evt) {
            document.getElementById("j_id_1v:j_id_1z").style.width='200px';
         } 
    
    //evento in ascolto che viene registrato all’onload della pagina 
         if (!window['postMessage'])
             alert("oh crap");
         else {
             if (window.addEventListener) {
                 window.addEventListener("message", receiveMessage, false);
             }
         }
    </script>

    Applicativo chiamato
    
    <script  language='javascript'>
    //funzione che riceve il messaggio inviato 
    function receiveMessage(evt) {
    
        var ta = document.getElementById("CBNonAttivoImg_selReparto");
        if(ta == null)
           alert(“windows error”);
        else
            document.getElementById("CBNonAttivoImg_selReparto").click();
        callback();
    
    } 
    //evento in ascolto che viene registrato all’onload della pagina 
    if (!window['postMessage'])
        alert("oh crap");
    else {
        if (window.addEventListener) {
            window.addEventListener("message", receiveMessage, false);
        }
    }
    
    //funzione di callback da chiamare per effettuare una chiamata al chiamante
    function callback()
    {
        var win = window.parent ;
    
        if (win == null || !window['postMessage'])
            alert("windows error ");
        else
            win.postMessage("hello", "*");
    }
    
    </script>
Devi accedere o registrarti per scrivere nel forum
1 risposte