2012-02-22 25 views
56

Sto cercando di aprire una nuova finestra da JavaScript, ma nulla viene inserito nel codice HTML:Come aprire una nuova finestra e inserire HTML in esso utilizzando jQuery?

var callScriptText = $('#callScriptText').html(); 
var url = '/Action/CallScript/?callScript='; 

// Open the current call script in a new window 
var openWindow = window.open(url, 'callScriptPopup', 'width = 500, height = 500'); 
$(openWindow).html(callScriptText); 

Qualcuno sa perché?

risposta

98

Ecco un esempio per aprire una nuova finestra con il contenuto utilizzando jQuery

<script> 
function nWin() { 
    var w = window.open(); 
    var html = $("#toNewWindow").html(); 

    $(w.document.body).html(html); 
} 

$(function() { 
    $("a#print").click(nWin); 
});​ 
</script> 

<div id="toNewWindow"> 
    <p>Your content here</p> 
</div> 

<a href="javascript:;" id="print">Open</a>​ 

EDIT: Per quelli che dicono che questo codice non funziona, ecco una jsfiddle di provarlo http://jsfiddle.net/8dXvt/

+0

Grazie! Ma come aggiungo un url in modo che non dica solo di: vuoto? – Tanya

+0

se vuoi che l'URL nella nuova finestra sostituisca semplicemente window.open con 'window.open ('/ Action/CallScript /? CallScript =', 'myWin', 'width = 500, height = 500');' Carica l'URL e imposta quel nome nella finestra. Inoltre puoi cancellare la riga 'var html = $ (" # toNewWindow "). Html();' – Juanma

+0

Sì, funzionava. – Tanya

72

Prova questo:

var x=window.open(); 
x.document.open(); 
x.document.write('content'); 
x.document.close(); 

Trovo che funziona in Chrome e IE.

+4

Perfetto. Grazie. –

+8

Funziona meglio della soluzione jQuery perché è possibile scrivere un intero documento HTML, inclusi doctype e tag ''. – user113215

+0

non funziona nella mia versione di cromo 51.0.2704.84 m. La x dopo window.open() restituisce undefined in modo che non abbia il documento – LucVH

19

costruzione su @ la risposta di Emre.

con JavaScript, è possibile concatenare, così si può modificare il codice per:

var x=window.open(); 
x.document.open().write('content'); 
x.close(); 

Inoltre, per costringerlo a una nuova finestra (non una nuova scheda), danno le prime quote di linea. Ma deve essere il terzo argomento. Quindi cambiare la prima linea a:

var x=window.open('','','width=600, height=600'); 
+0

Il concatenamento è un po 'troppo aggressivo, document.write() non restituisce nulla, quindi Chrome riporta: Uncaught TypeError: Impossibile leggere la proprietà' close 'di undefined. – jjrv

+0

@jjrv, che non è un concatenamento aggressivo ... dovresti controllare prima il concatenamento ... ad esempio, 'if (content! == 'undefined') {x.document.open(). write (content) .close();} – Sablefoste

+1

document.write() restituisce sempre undefined, quindi il codice concatenato chiama sempre undefined.close() e genera sempre un errore. – jjrv

1

prova:

var x = window.open('', '', 'location=no,toolbar=0'); 
x.document.body.innerHTML = 'content'; 
Problemi correlati