Insertando en iframe con jQuery

Estoy intentando insertar un fragmento en un iframe a través de jQuery con lo siguiente:

var snippet = "document.writeln('test')"; jQuery('').appendTo('body').append(snippet); 

En lugar de escribir “prueba” en el iframe, sobrescribe la ventana principal.

¿Cómo puedo hacer que la ventana principal obtenga el iframe con “test” insertado en ella?

Debe establecer el origen de las nuevas ventanas e iframes en ‘about: blank’ si desea controlarlas. ¡Entonces consíguelo por la identificación del iframe!

También desea utilizar iframe.contentDocument || iframe.contentWindow.document iframe.contentDocument || iframe.contentWindow.document
Y podría ser una buena idea ‘abrir ()’ el documento antes de ‘escribir’).

Actualización: olvidé esto: si abres la ventana acerca de: en blanco, se necesita tiempo para cargar … ¡¡Así que no puedes escribir en ella de inmediato !! Por lo tanto, establezca un tiempo de espera de aproximadamente 50 ms (normalmente) y luego escriba en la nueva ventana / iframe.
O compruebe si está cargado (onload), luego pídale que escriba la fuente (prefiero esto).
Si necesita reutilizar el iframe, configúrelo en aproximadamente: en blanco primero (nuevamente) y espere o verifique la carga antes de escribir nuevamente en el marco. Todo esto se debe a la seguridad xss.
También recomiendo encarecidamente que utilice el modelo de evento tradicional (por lo que no hay cosas que agreguen al evento, no funcionan según lo previsto y llevan a las hojas de memoria en IE).

Entonces: cree iframe con src establecido en about: blank, agregue una función onload que verifique una var que contenga su cadena html: si está vacía, de lo contrario, escríbala en el iframe y vacíe la cadena.
Para actualizar el iframe: establezca el contenido en la var que contiene la cadena html, y luego configure el origen del iframe en aproximadamente: en blanco.
¿Entiendes el bucle?

Este bebé incluso trabaja en IE6 …

¡¡Buena suerte!!

ACTUALIZACIÓN: no escapó correctamente de su fragmento: debería ser:
Ver: jsfiddle

ACTUALIZACIÓN2: argl .. Normalmente nunca me rindo, pero como no me importa jQuery, no estoy revisando el manual de jQuery para algo tan simple en algo tan difícil como jQuery (lo siento). Por razones de seguridad modernas (crappy) necesita un about: blank. Período.

Vea este fiddle actualizado para los conceptos básicos de 'plain jane' en el trabajo, luego vea cómo hacerlo en jquery y haga una elección: onload o setTimeout. Estoy trabajando en mi propio editor html de crossbrowser y este tema tardó más de una semana en resolverlo.