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

    Javascript DOM - Explorer non legge l'attributo name

    Ciao a tutti.
    Ho un problema di compatibilità con Explorer maledetto.

    Per semplificare il più possibile scriverò solo il pezzo di codice interessato.

    Codice HTML
    codice:
    ...
    <iframe id="mioIframe"></iframe>
    ...
    Con Javascript ho una funzione che fa un submit dei dati di un form a questo maledetto iframe.

    codice:
    function spedisci(idForm) {
      var form = document.getElementById(idForm);  // recupero il form
      // IL PROBLEMA E' IN QUESTA RIGA SUCCESSIVA: sembra essere ignorata (su IE)!!!
      document.getElementById("mioIframe").setAttribute("name", "iframeNome"); /* setto il name all'iframe */
      form.target = "iframeNome"; // setto il target del form
      form.submit(); // spedisco i dati all'iframe
    Con Explorer, e solo con lui, il submit viene fatto in una nuova pagina che mi apre come un popup (e che ovviamente segnala errori in quanto ha delle funzioni che fanno riferimento al parent!!)



    P.S. mettendo l'attributo name nel codice HTML funziona, ma non è quel che voglio, ho bisogno di risolvere questa situazione per una questione di maggiore compatibilita' delle mie librerie.


    All'inizio pensavo che fosse un problema simile all'attributo class che solo su Explorer diventa className, ma cercando su google non ho trovato niente.

    Come posso fare?
    Il cinghiale è un animale raffinato

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    prova senza passare per setAttribute
    document.getElementById("mioIframe").name="iframeN ome";

    so di un bug (anche se non lo ammettono) di IE che si verificherebbe se l' elemento venisse creato con createElement, ma da come hai scritto l' iframe sembra essere presente nel markup

  3. #3
    Già fatto... stesso risultato...


    Tra l'altro la mia intenzione è proprio quella di crearlo proprio come hai detto con il createElement... L'ho messo nel codice html per semplificare la presentazione del problema....

    E l'ho già fatto. Infatti su Mozilla e tutti gli altri funziona correttamente.


    Spiego un po' cosa sto costruendo:
    Ho intenzione di implementare il trucchetto dell'iframe nascosto per poter fare un upload di file senza ricaricare tutta la pagina (ajax like).

    Se metto l'iframe nel codice html con il suo attributo name tutto funziona correttamente, ma nell'XHTML 1.1 il tag iframe è stato rimosso e comunque se volessi riutilizzarlo sarebbe più comodo che la funzione facesse tutto.
    La mia funzione Javascript ne crea uno, gli fa la richiesta e poi lo elimina.


    Peccato per questo name...
    Il cinghiale è un animale raffinato

  4. #4

  5. #5
    SEI UN GRANDE!!!

    Funziona perfettamente!!!

    Maledetta Microsoft che fa tutto per i cavoli suoi...

    Sono in debito con te, stavo veramente abbandonando l'idea e mi hai riaperto mille strade!


    Se può servire, lascio la mia funzione, che può essere inserita nell'attributo action del form che spedisce i file!
    Questa versione non elimina l'iframe creato, lo lascia invisibile incollato in fondo al documento.
    codice:
    function ajaxLikeUpload(idForm) {
    	var form = document.getElementById(idForm);
    	if(form.getAttribute("enctype") != "multipart/form-data")
    		form.setAttribute("enctype", "multipart/form-data");
    	form.setAttribute("target", "iframeAjaxLike");
    	if(!document.getElementById("iframeAjaxLike")) {	// se non c'e' gia'
    		var iframe = null;
    		try {	// per Explorer
    			iframe = document.createElement("<iframe name='iframeAjaxLike'>");
    		}catch(e){}
    		if(!iframe || iframe.nodeName.toLowerCase() != "iframe") iframe = document.createElement("iframe");  // tutti gli altri
    		iframe.setAttribute("id", "iframeAjaxLike");
    		iframe.setAttribute("name", "iframeAjaxLike");
    		iframe.style.display = "none";
    		document.body.appendChild(iframe);
    	}// altrimenti forzo l'attributo name
    	else document.getElementById("iframeAjaxLike").setAttribute("name", "iframeAjaxLike");
    	form.submit();
    }
    ORA TUTTO E' RISOLTO,

    GRAZIE ANCORA!!
    Il cinghiale è un animale raffinato

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    di nulla

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.