2012-05-13 7 views
15

Estoy haciendo una secuencia de comandos de Greasemonkey y me gustaría abrir una nueva pestaña que no mostrará una URL sino algo de HTML que es parte de la secuencia de comandos. Así que, básicamente, quiero hacer algo como esto (que obviamente no funciona):Abra una nueva pestaña con HTML personalizado en lugar de una URL

window.open('<html><head></head><body></body></html>'); 
or 
GM_openInTab('<html><head></head><body></body></html>'); 

¡Cualquier pista es bienvenida!

+0

creo que debería ser posible hacer window.open ('nonexistingURL'). Se abrirá una nueva pestaña con una "página no encontrada" predeterminada de los navegadores. Debería ser posible ejecutar scripts GM en la url no existente. Lo intentaré ... –

Respuesta

35

Usted puede hacer esto:

var newWindow = window.open();

y luego hacer

newWindow.document.write("ohai");

+0

gracias, no sabía que puedes escribir a una nueva ventana –

+0

No funciona, se abre una nueva pestaña pero está vacía con aproximadamente: en blanco en la línea de dirección :-(. – Blackhex

+0

Creo esto se traduce en una llamada de 'window.open' en la ventana subyacente (insegura) del navegador, que por lo tanto dejaría su ventana recién abierta accesible para la secuencia de comandos en la página que está viendo. (Es por eso que hay una función' GM_openInTab' después todo, para evitar esto). – Doin

6

Si la otra respuesta que da Error: Permission denied to access property "document", ver this question acerca de cómo manejar los problemas de política del mismo origen, o this one.

O, rápido y sucio, utilice un URI de datos:

var html = '<html><head></head><body>ohai</body></html>'; 
var uri = "data:text/html," + encodeURIComponent(html); 
var newWindow = window.open(uri); 
+1

Rara vez es necesario, y en la mayoría de las situaciones hay mejores formas de solucionar los problemas "Permiso denegado para acceder a la documentación de la propiedad t "errors: http://stackoverflow.com/questions/7995223/, http://stackoverflow.com/questions/22481340/, etc. – paulsm4

+1

Edité las sugerencias correctas en mi respuesta, ya que la respuesta principal crea esta situación para algunos, y es demasiado para un comentario. – Noumenon

Cuestiones relacionadas