web-dev-qa-db-fra.com

Ouvrez un nouvel onglet avec du HTML personnalisé au lieu d'une URL

Je fais un script Greasemonkey et je voudrais ouvrir un nouvel onglet qui n'affichera pas une URL mais du HTML qui fait partie du script. Donc, fondamentalement, je veux faire quelque chose comme ça (qui ne fonctionne évidemment pas):

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

Tous les indices sont les bienvenus!

32
kasper Taeymans

Tu peux le faire:

var newWindow = window.open();

puis faire

newWindow.document.write("ohai");

55
aL3891

Si l'autre réponse vous donne Error: Permission denied to access property "document", voir cette question sur la façon de gérer les problèmes de politique d'origine identique, ou celui-ci .

Ou, rapide et sale, utilisez un URI de données:

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