2012-05-13 13 views
15

Ich mache ein Greasemonkey-Skript und möchte einen neuen Tab öffnen, der keine URL anzeigt, sondern HTML, das Teil des Skripts ist. Also im Grunde möchte ich so etwas tun (was natürlich nicht funktioniert):Öffnen einer neuen Registerkarte mit benutzerdefiniertem HTML anstelle einer URL

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

Alle Hinweise sind willkommen!

+0

Ich denke, es sollte möglich sein window.open ('nonexistingURL') zu tun. Ein neuer Tab wird mit der Standardeinstellung "Seite nicht gefunden" des Browsers geöffnet. Es sollte möglich sein, GM-Skripte auf der nicht existierenden URL auszuführen. Ich werde das versuchen ... –

Antwort

35

Sie können dies tun:

var newWindow = window.open();

und tun dann

newWindow.document.write("ohai");

+0

danke, wusste nicht, dass Sie in ein neues Fenster schreiben können –

+0

Funktioniert nicht für mich, neue Registerkarte geöffnet ist, aber es ist leer mit etwa: leer in der Adresszeile :-(. – Blackhex

+0

Ich denke Dies führt zu einem Aufruf von 'window.open' im zugrunde liegenden (unsicheren) Browserfenster, wodurch Ihr neu geöffnetes Fenster auf der von Ihnen betrachteten Seite für Skripts zugänglich bleibt. (Deshalb gibt es eine 'GM_openInTab'-Funktion all das, um das zu verhindern – Doin

6

Wenn die andere Antwort, die Sie Error: Permission denied to access property "document" gibt, sehen this question darüber, wie Same Origin Policy Probleme zu handhaben, oder this one.

Oder schnell und schmutzig, eine Daten URI verwenden:

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

Wird selten benötigt, und in den meisten Situationen gibt es bessere Möglichkeiten zur Fehlerbehebung "Berechtigung verweigert, um auf Eigenschaftendokument zuzugreifen t "Fehler: http://StackOverflow.com/Questions/7995223/, http://StackOverflow.com/Questions/22481340/, etc. – paulsm4

+1

Ich habe Ihre richtigen Vorschläge in meine Antwort bearbeitet, da die oberste Antwort diese Situation für erstellt einige, und es ist zu viel für einen Kommentar. – Noumenon

Verwandte Themen