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

    ATTENZIONE!! Problema di salvataggio file con execCommand("SaveAs")

    << Problema di salvataggio file con execCommand("SaveAs") >>

    Salve a tutti, ho un problemino con il mio Javascript!

    Questo script, in realtà è la parte finale di uno script più complesso, che si prefigge il compito di importare le informazioni da un file esterno, elaborarle, e poi creare un codice HTML, che vorrei poter salvare all'esterno.

    Nell'esempio che vi porto, ho già ottenuto il codice-sorgente, della mia nuova pagina da dover salvare, per non appensantire lo script.

    Il problema consiste nel fatto che il comando execCommand("SaveAs"), funziona solo come metodo dell'oggetto document, in questa forma document.execCommand("SaveAs"), ma se lo usassi così, lo script, mi andrebbe a creare una copia della pagina madre, mentre se uso questo tipo di sintassi page.document.execCommand("SaveAs"), è come se creasi un nuovo documento nascosto al documento principale. :master:

    Ma per poter fare ciò devo definire page, e qui nasce il primo problema: example.htm
    Codice PHP:
    <html><head><title>Test Salvataggio</title><script language="JavaScript">
    name="test";
    page=new Object();
    page.document.write("<html><head><title>Pagina da Salvare</title></head><body><table width=100% height=100%><tr><th><hr>Pagina da Salvare<hr></th></tr></table></body></html>")
    page.document.execCommand("SaveAs","true",name)
    </script></head><body>Test Salvataggio</body></html> 
    Ho provato a definire page come new Object, ma IE mi da il seguente errore:
    'page.document' è nullo o non è un oggetto

    Sapreste voi come fare, per eliminare questo errore, e definire correttamente page in maniera tale da poter creare un documento nascosto da poter esportare all'esterno mediante il comando execCommand("SaveAs")??

    Grazie 1000 in anticipo , e per ulteriori chiarimante basta chiedere.

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Nel frattempo che qualcuno possa darti info utili se possibile o meno fare quello che chiedi, hai provato a spulciare sul sito della microsoft (essendo un comando proprietario IE) forse trovi subito quello che cerchi è solo un idea.


    P.S. Poi dai anche una lettura al regolamento interno di questo forum, titoli del genere non sono ben visti
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    ho cercato bene, ma non sono riuscito a trovare una soluzione al mio problema.

    Se ne siete in grado, vi prego di aiutarmi a risolvere questo problema

    grazie ancora

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    scrivi il contenuto in un iframe generato e popolato dinamicamente,
    poi lancia l' execCommand save del documento contenuto in questo iframe

    credo sia l' unica via su IE

    forse e' plausibile usare un documentFragment invece che un iframe, ma e' tutto da provare

  5. #5
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    a certe condizioni, anche con il documentFragment funzionerebbe (IE6+)
    codice:
    window.onload=function(){
    	var fragment = document.createDocumentFragment();
    	fragment.appendChild(document.createTextNode('ciao'))
    	fragment.execCommand('SaveAs','false','pippo.txt')
    }

  6. #6
    Grazie Xinod ora funziona tutto
    .... quasi tutto

    In realtà, il codice che mi hai dato, mi salva davvero una pagina html con scritto al suo interno, il contenuto di document.createTextNode....ma c'è un problema

    Al suo interno non riesco ad inserire dei tags HTML!!! :master:

    Il mio scopo era creare un convertitore automatico in Javascript, che imporasse dall'esterno dei file RTF (formato in cui vengono salvate le cronologie in Windows Messenger 4.7), e ne ricavasse fuori una pagina web formattata sencondo uno stile predefinito.
    Con quest'ultima porzione di codice, avrei voluto che il risultato cosi ottenuto dal mio programma, venisse esportato all'esterno e salvato come documento html a se stante.
    ----------------------------------------------------------------------------------------
    Questo è il mio programma: Messenger 4.7 Chronology Converter
    ----------------------------------------------------------------------------------------
    Il problema si pone, infatti, alla fine, quando l'utente salva la pagina web.
    Quando poi si visualizza la pagina salvata, nel corpo della stessa compare il codice non interpretato dal browser. Questo accade perché al momento di slavare la pagina, il browser converte tutti i segni (come "<", ">", """ e non solo), nella codifica classica che impedisce al browser di interpetare i tag come tali, ma solo come una parola racchiusa dai due segni di minore e maggiore.

    L'unica maniera possibile per risolvere questo problema, è che io capisca il significatto effettivo dei comandi usati nel codice di salvataggio, in modo da far capire al browser che "<h5>" è un tag e non una parola fra "<" & ">".

    Spero di essermi spiegato con chiarezza, e comunque grazie ancora per l'aiuto

  7. #7
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    se scrivi un nodo di testo come pretendi di inserirvi dentro tag che vengano considerati tali?
    se usi i metodi del DOM devi rispettarlo in tutto e per tutto, non s' improvvisa

    quindi torniamo all' idea dell' iframe, che forse ti semplifica il procedimento
    (nel fragment non mi risulta sia possibile iniettare codice via innerHTML)

    codice:
    window.onload=function(){
    	var ifrm=document.createElement('iframe');
    	ifrm.style.display='none';
    	document.body.appendChild(ifrm);
    	ifrm.doc=ifrm.contentWindow.document;
    	ifrm.doc.open();
    	ifrm.doc.write("<html><head><title>Pagina da Salvare</title></head><body><table width=100% height=100%><tr><th><hr>Pagina da Salvare<hr></th></tr></table></body></html>");
    	ifrm.doc.close();
    	ifrm.doc.execCommand('SaveAs','false','pippo.htm')
    
    }
    ciao

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.