2012-05-13 9 views
15

Sto creando uno script Greasemonkey e vorrei aprire una nuova scheda che non visualizzerà un URL ma un codice HTML che fa parte dello script. Quindi, fondamentalmente voglio fare qualcosa di simile (che non è, ovviamente, funziona):Apre una nuova scheda con HTML personalizzato invece di un URL

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

Eventuali suggerimenti sono i benvenuti!

+0

penso che dovrebbe essere possibile fare window.open ('nonexistingURL'). Una nuova scheda si aprirà con una "pagina non trovata" predefinita del browser. Dovrebbe essere possibile eseguire gli script GM sull'URL non esistente. Proverò che ... –

risposta

35

Si può fare questo:

var newWindow = window.open();

e poi fare

newWindow.document.write("ohai");

+0

grazie, non sapevo che puoi scrivere in una nuova finestra –

+0

Non funziona per me, la nuova scheda è aperta ma è vuota con about: blank nella riga dell'indirizzo :-(. – Blackhex

+0

Penso questo si traduce in una chiamata di 'window.open' nella sottostante finestra (non sicura) del browser, che quindi lascerebbe la tua finestra appena aperta accessibile allo script sulla pagina che stai visualizzando. (Ecco perché c'è una funzione' GM_openInTab' dopo tutto, per impedirlo) – Doin

6

Se l'altra risposta che dà Error: Permission denied to access property "document", vedere this question su come gestire i problemi criterio dell'origine, o this one.

Oppure, rapido e sporco, utilizzare un URI di dati:

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

Raramente necessario, e nella maggior parte delle situazioni ci sono modi migliori per risolvere i problemi "Autorizzazione negata per accedere alla documentazione di proprietà t "errori: http://stackoverflow.com/questions/7995223/, http://stackoverflow.com/questions/22481340/, ecc. – paulsm4

+1

Ho modificato i tuoi suggerimenti corretti nella mia risposta, poiché la risposta più alta crea questa situazione per alcuni, ed è troppo per un commento. – Noumenon

Problemi correlati