Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Fare il submit da un frame

    Ciao a tutti. Quello che voglio riuscire a fare potrà sembrarvi strano... :
    Ho una pagina con 2 frame. Nel primo frame carico una pagina di un sito esterno il cui sorgente è:

    codice:
    <body scroll=no bottommargin=0 marginheight=0 marginwidth=0 rightmargin=0 topmargin=0 leftmargin=0 bgcolor=#32528B>
    <form action="module.php" method="POST">
    <center>[img]XXX[/img]
    <input type="text" size="5" name="codice"><input type="hidden" name="user_mail" value="XXX"><input type="hidden" name="user_password" value="XXX">
    <input value="Conferma" name="submit" type="submit"></center>
    </form>
    Come potete notare, il form non ha un nome e io non posso modificarlo.

    Nel secondo frame carico una pagina in locale dalla quale voglio azionare il pulsante di submit. Il codice che ho usato è:

    codice:
    function submitform(){
    parent.NOMEPRIMOFRAME.document.getElementsByTag('form')[0].submit();
    }
    Che non funziona! E non funziona proprio perchè c'è un pulsante di tipo submit.
    Come posso fare?
    Ripeto: non posso dare un nome al form.

    GRAZIE!
    Fabio
    rm -f stupidity

  2. #2
    Non esiste un metodo getElementsByTag()...esiste semmai getElementsByTagName(), che tuttavia non ti serve a molto in questo caso. L'unica cosa che puoi fare, dato che non puoi agire direttamente sulla pagina che contiene il form, è utilizzare l'array dei form presenti in un documento con la sintassi document.forms. L'unica "controindicazione" è che devi conoscere sempre la posizione del form. Se la pagina esterna che carichi contiene sempre un unico form è semplice, ma se dovesse contenere due o più form e tu dovessi fare il submit del secondo o del terzo, dovresti studiare un sistema per passare a JavaScript la posizione del form che vuoi spedire. Nel dettaglio, il codice seguente utilizza l'array forms per inviare sempre il primo form presente nel documento caricato nel tuo frame:

    codice:
    function submitform() {
    parent.NOMEPRIMOFRAME.document.forms[0].submit();
    }
    Chiaramente, se la pagina contiene due form e tu dovessi spedire il secondo, dovresti indicare forms[1]. Puoi anche sostituire parent con top se vuoi, così il codice ti funziona anche se un giorno dovessi racchiudere il tuo frameset in un altro frameset.

  3. #3
    Grazie, un secondo modo che funziona è questo:
    codice:
    parent.NOMEPRIMOFRAME.document.getElementsByName('submit')[0].click();

    Ciao
    rm -f stupidity

  4. #4

    DOMANDONE

    Dunque, finora avevo provato il codice sempre su una pagina in locale (estensione *.html) .
    Non appena l'ho testata sul sito che contiene il form(pagina con estensione *.php) ecco che lo script NON FUNZIONA.
    Ovvero provando ad esempio a cambiare il value di un input text di un sito esterno non funge!

    A prova di ciò ho testato su google.it questa riga di codice:
    codice:
    parent.nomeframe.document.getElementsByName('q')[0].value="ciao";
    che funziona se e solo se la pagina è in locale (copiando il sorgente e creando una pagina apposita in locale del tipo google_locale.html ).

    PERCHÈ?? Sembra che Javascript si blocchi con le pagine di siti esterni. Ciò vuol dire che non riuscirò mai a fare il submit di un form di un sito esterno da una pagina in locale ?? (con Javascript ovviamente...)

    GRAZIE
    rm -f stupidity

  5. #5
    Dunque...a parte il fatto che non dovrebbe c'entrare nulla il fatto che una pagina sia scritta in HTML o in PHP con JavaScript, stai per caso usando Firefox? Controlla che JavaScript sia abilitato completamente (di default non lo è). Poi controlla, indipendentemente dal browser che usi, le impostazioni di sicurezza dell'area Internet per vedere se per caso non stiano bloccando l'esecuzione di codice JavaScript dai siti web. Se usi Windows XP col SP2 è probabile che ci sia qualcosa di configurato in modo molto restrittivo (non finirò mai di dire che Windows XP, IE 6 e il SP2 siano emerite scempiaggini più che software...e il guaio è che ogni giorno che passa me ne rendo sempre più conto).

  6. #6
    Sì uso Firefox 1.5.0.2 . Javascript è abilitato; poi guardando nelle impostazioni avanzate non c'è nulla di influente (e comunque ho barrato tutte le caselle...).

    Con IE mi dà un errore sull 'esecuzione dello script : "Access is denied"

    ???
    rm -f stupidity

  7. #7
    Se ti dà quell'errore significa che non ti permette di eseguire script da un dominio diverso. A parte che spuntare tutte le caselle non significa abilitare tutto (alcune opzioni se spuntate disabilitano certe cose), ma se non hai firewall o cose smili, non vedo altre soluzioni che verificare le impostazioni del browser. Devi controllarle una per una...

  8. #8
    rm -f stupidity

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