2012-02-22 29 views
56

estoy tratando de abrir una nueva ventana de javascript pero nada se inserta en el HTML:¿Cómo abrir una nueva ventana e insertar html usando 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); 

¿Alguien sabe por qué?

Respuesta

98

He aquí un ejemplo para abrir una nueva ventana con el contenido con 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: Para aquellos que dicen que este código no funciona, aquí hay un jsFiddle probarlo http://jsfiddle.net/8dXvt/

+0

¡Gracias que funcionó! Pero, ¿cómo agrego una URL en ella para que no solo diga: en blanco? – Tanya

+0

si desea la URL en la nueva ventana simplemente reemplace la ventana. Abra con 'window.open ('/ Action/CallScript /? CallScript =', 'myWin', 'width = 500, height = 500');' Eso cargará la URL y establecerá ese nombre en la ventana. También puede eliminar la línea 'var html = $ (" # toNewWindow "). Html();' – Juanma

+0

Sí, eso funcionó. – Tanya

72

Prueba esto:

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

Encuentro funciona en Chrome e IE.

+4

perfecto. Gracias. –

+8

Esto funciona mejor que la solución jQuery porque puede escribir un documento HTML completo, incluido el tipo de documento y las etiquetas ''. – user113215

+0

no funciona en mi Chrome Version 51.0.2704.84 m. La x después de window.open() devuelve indefinido por lo que no tiene el documento – LucVH

19

construcción sobre la respuesta de @ Emre.

Con JavaScript, puede cadena, por lo que acaba de modificar el código para:

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

Además, para forzarlo a una nueva ventana (no una nueva pestaña), dan los primeros dimensiones de la línea. Pero tiene que ser el tercer argumento. Así que cambiar la primera línea a:

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

Ese encadenamiento es demasiado agresivo, document.write() no devuelve nada, por lo que Chrome informa: UnEught TypeError: no se puede leer la propiedad 'close' de undefined. – jjrv

+0

@jjrv, no es un encadenamiento agresivo ... primero debe verificar el encadenamiento ... por ejemplo, 'if (content! == 'undefined') {x.document.open(). write (content) .close();} ' – Sablefoste

+1

document.write() siempre devuelve indefinido, por lo que el código encadenado siempre llama a undefined.close() y siempre arroja un error. – jjrv

1

intento:

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