2012-05-13 9 views
15

Robię skrypt Greasemonkey i chciałbym otworzyć nową kartę, która nie wyświetli adresu URL, ale jakiś HTML, który jest częścią skryptu. Więc zasadniczo chcę zrobić coś takiego (co oczywiście nie działa):Otwórz nową kartę z niestandardowym HTML zamiast adresu URL

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

Wszelkie wskazówki są mile widziane!

+0

myślę, że powinno być możliwe do zrobienia window.open ('nonexistingURL'). Zostanie otwarta nowa karta z domyślnymi ustawieniami przeglądarki "Nie znaleziono strony". Powinno być możliwe uruchamianie skryptów GM na nieistniejącym adresie URL. Spróbuję tego ... –

Odpowiedz

35

Można to zrobić:

var newWindow = window.open();

a następnie zrobić

newWindow.document.write("ohai");

+0

dziękuję, nie wiedziałem, że możesz napisać do nowego okna –

+0

Nie działa dla mnie, nowa zakładka jest otwarta, ale jest pusta z około: puste w linii adresowej :-( – Blackhex

+0

Myślę przekłada się to na wywołanie 'window.open' na leżącym poniżej (niebezpiecznym) oknie przeglądarki, które pozostawiłoby twoje nowo otwarte okno dostępne dla skryptu na stronie, którą przeglądasz. (To dlatego funkcja' GM_openInTab' po wszystko, aby temu zapobiec) – Doin

6

Jeśli druga odpowiedź daje Error: Permission denied to access property "document" patrz this question o tym, jak radzić sobie z problemami polityki tego samego pochodzenia, lub this one.

Albo, szybkie i brudne, należy użyć danych URI:

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

Rzadko potrzebne, aw większości sytuacji istnieją lepsze sposoby rozwiązywania problemów "Zezwolono na dostęp do dokumentacji właściwości t "errors: http://stackoverflow.com/questions/7995223/, http://stackoverflow.com/questions/22481340/, itp. – paulsm4

+1

Edytowałem twoje poprawne sugestie w mojej odpowiedzi, ponieważ najlepsza odpowiedź tworzy tę sytuację dla niektóre, i to za dużo na komentarz. – Noumenon

Powiązane problemy