In che modo JavaScript può creare una nuova pagina che contiene più JavaScript?

Sto aprendo una nuova pagina usando JS e scrivendo il codice HTML, tuttavia quando provo a scrivere JS all’interno della nuova pagina usando la funzione document.write() non funziona. Apparentemente il JS principale si chiude non appena vede che è inteso per il JS della nuova pagina che verrà aperta.

C’è un modo per aggirare questo?

 var opened = window.open(""); opened.document.write(""); opened.document.write(""); opened.document.write("Print Copy"); opened.document.write(""); opened.document.write(""); opened.document.write(""); opened.document.write("

test

");

Sembra che tu stia incorporando il JS in un documento HTML anziché utilizzare un file esterno e che lo stai servendo come text / html. (Se si trattasse di XHTML, si otterrebbe un semplice errore di well-formsdness).

Puoi spostare il codice su un file esterno (che è l’opzione più semplice) oppure puoi sfuggire ai caratteri della barra su qualsiasi cosa assomigli ad un tag finale:

 document.write("< \/script>"); 

Nota che dovresti farlo a tutti i tag di chiusura (non solo ) a causa del modo in cui funziona SGML (anche se la maggior parte dei browser non rispetta completamente le regole di SGML).

C’è una buona domanda di FAQ su questo argomento .

Se non hai voglia di dividere la stringa, puoi anche usare il carattere di escape:

 opened.document.write("< \/script>"); 

EDIT: come altri hanno sottolineato, si dovrebbe sfuggire alla barra con un backslash.

La soluzione facile (ma non standard) è quella di rompere la stringa:

 opened.document.write("");