Domanda

Ho un po 'di codice Javascript che crea un "salva friendly" versione di una pagina web.

child = window.open("","child");
child.document.write(htmlPage);

"htmlPage" è l'HTML di base della pagina con tutti i riferimenti javascript stipulate, un diverso insieme di intestazione immagini riferimenti, ecc.

Tutto visualizza perfettamente nella finestra pop-up, senza l'esecuzione di JavaScript. Quando clicco su "File-> Salva con nome", il file salvato è la finestra genitore, insieme a tutta la sua javascript, e senza alcuna traccia della finestra secondaria. Qualcuno sa come risolvere questo problema? Voglio salvare solo la finestra secondaria.

Grazie, -Kraryal

È stato utile?

Soluzione

Quando si salva la pagina si salva il contenuto URL originale (ad esempio, proprio come se si è scaricato una nuova copia)

Se si desidera una versione "puliti", avrete bisogno di generare quella versione sul server, e aprire il pop-up con l'URL come il primo parametro.

Altri suggerimenti

Ho avuto una situazione simile (ma non ero disposto a rinunciare del tutto). Sto costruendo una versione di salvataggio-friendly di una pagina web utilizzando Javascript che voglio all'utente di scaricare come file di testo (valori separati da virgole, nel mio caso). Penso URI data: può aiutare qui.

//construct the csvOutput in Javascript first
var popup = window.open("data:application/octet-stream," + encodeURIComponent(csvOutput), "child");
//no need to document.write() anything in the child window

In Firefox, questo non pop-up una finestra ancora, basta chiede all'utente se vogliono salvare il file, e lo salva come file .part. Non esattamente l'ideale, ma almeno si salva il file senza spuntando una finestra non necessaria.

In alternativa, si può utilizzare il / tipo MIME plain text:

//construct the csvOutput in Javascript first
var popup = window.open("data:text/plain;charset=utf-8," + encodeURIComponent(csvOutput), "child");

In Firefox, questo pop aprire una nuova finestra, ma poi è salvato per impostazione predefinita come testo ASCII, senza che nessuna delle cruft della finestra genitore o qualsiasi linea-wrapping. Questo è probabilmente ciò che io voglio usare.

Sembra che questo non funzionerà in IE però. IE 8 è l'unica versione che supporta URI data:, ed ha una serie di restrizioni su cui può essere utilizzato. Per IE, si potrebbe guardare execCommand .

Grazie a questo tek-tip filo e < a href = "http://en.wikipedia.org/wiki/Data_URI_scheme" rel = "noreferrer"> articolo di Wikipedia sui dati schema URI .

per un / IE versione solo finestre vedere qui: http://p2p.wrox.com/javascript-how/3193-how-do-you-save-html-page-your-local-hd.html

Lo so, terribile, ma solo nel caso che si tratti di come un IE Intranet solo ....

Purtroppo, a quanto pare non ho abbastanza reputazione per aggiungere commenti alla mia domanda, quindi mi aggiungere questo qui.

Questa javascript è distribuito sia per Internet Explorer e Safari. L'applicazione di hosting non ha sempre l'accesso al file system locale.

Gli utenti possono contrassegnare la pagina con cui stanno lavorando, quindi salvarlo per la stampa successiva o e-mail. Diciamo loro di salvarlo come un archivio di file singolo in modo che possa effettivamente essere posta. La finestra di salvataggio può farlo, e l'utente può inserire il file da qualche parte hanno accesso t, ecco perché abbiamo usato.

Sembra il modo più semplice sarebbe quella di scrivere il nuovo HTML dal javascript nella directory locale, ma non possiamo sempre farlo. Tutte le altre idee? Grazie per l'aiuto finora.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top