2011-04-22 9 views
6

Esta es mi primera publicación en desbordamiento de pila, ... :) ¡Me gusta mucho este sitio!Copiar HTML de un documento original en una ventana emergente (usando JQuery)

Mi pregunta: ¿Cómo copio un elemento de una página de inicio en una ventana emergente usando JQuery?

Aquí es lo que he probado hasta ahora:

CopyToThisPageFromTheParent('#accordianResults'); 
function CopyToThisPageFromTheParent(querySelector) { 
    var clone = $(querySelector, window.parent.document).clone(); 
    $('#testHtml').append(clone); 
    alert($('#testHtml').html()); 
} 

También he intentado:

var clone = $('#accordianResults', window.parent.document).clone(); 
    alert($('#testHtml').html()); 

Gracias!

David

+0

Tengo este código de trabajo, por lo que supongo que debería marcarla como una respuesta a continuación para que pueda mostrar lo que terminé haciendo? – David

+0

Marque la respuesta correcta con una marca de verificación – locrizak

Respuesta

2

Tuve dos problemas con mi JavaScript.

  1. que estaba usando en lugar de window.parent.document window.opener.document
  2. Por alguna razón la sintaxis .Append() no me permite anexar el objeto clonado

En cambio, tuve que usar el elemento .html() que colgaba del selector JQuery para pasar HTML fuera del clon y hacia .append().

Este es el resultado eventual final:

CopyToThisPageFromTheParent('#accordion', '#testDiv'); 

function CopyToThisPageFromTheParent(openingWindowSelector, childWindowSelector) { 
    var clone = $(openingWindowSelector, window.opener.document).clone(true); 
    var theOuterHtml = clone.wrap('<div></div>').parent().html(); 
    $(childWindowSelector).append(theOuterHtml); 
} 

esto es suponiendo que tengo este código HTML:

<div id="testDiv"></div> 

en la página de mi ventana emergente, y este código HTML:

<div id="accordion">something</div> 

en mi página principal, y usé "window.open();" para abrir la ventana emergente.

Gracias, David

1

Sólo puede hacer:

 
$("#testHtml").html($(querySelector).html()) 
+0

En realidad, gracias locrizak, ¡eso es lo que necesitaba! (usando la propiedad .html() para poblarlo). – David

+0

Esto solo lo rellenará con los * hijos * del objetivo de 'queryselector' –

+0

Es cierto, todavía necesita hacer referencia a la página de origen (window.opener.documento) – David

0

No estoy seguro de lo que se trata:

$(querySelector, window.parent.document)

$ seleccionará de todo el DOM de forma predeterminada. Esto es funcionalmente idéntica a:

$(querySelector)

Su código, en realidad, parece que debería funcionar, asumiendo que los selectores son correctos para las cosas en su página.

+0

Hola Jamietre, esta es una ventana emergente que se ejecuta en el contexto de un comando window.open(). De hecho, tenía la sintaxis incorrecta. Debería ser: $ (querySelector, window.parent.document); parece. – David

+1

$ (querySelector, window.opener.document); – David

+0

que tiene más sentido, ¡me preguntaba qué demonios estabas tratando de hacer! –

Cuestiones relacionadas