2012-05-13 27 views
15

我正在製作Greasemonkey腳本並希望打開一個新選項卡,該選項卡不會顯示一個URL,但會顯示一些屬於該腳本的HTML。所以基本上我想做這樣的事情(這顯然不起作用):使用自定義HTML而不是URL打開一個新選項卡

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

歡迎任何提示!

+0

我想應該是可以做到的window.open( 'nonexistingURL')。一個新選項卡將打開瀏覽器的默認「頁面未找到」。應該可以在不存在的URL上運行GM腳本。我會嘗試... –

回答

35

你可以這樣做:

var newWindow = window.open();

,然後做

newWindow.document.write("ohai");

+0

謝謝,不知道你可以寫一個新窗口 –

+0

不適合我,新標籤打開,但它是空的約:地址欄中的空白:-(。 – Blackhex

+0

我想這意味着在底層(不安全)的瀏覽器窗口上調用window.open,這會讓你打開的窗口在你正在查看的頁面上被腳本訪問(這就是爲什麼在後面有一個'GM_openInTab'函數所有,以防止這種情況) – Doin

6

如果對方的回答給你Error: Permission denied to access property "document",看到this question有關如何處理同源策略的問題,或this one

或者,快速和骯髒的,使用數據URI:

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

很少需要,並且在大多數情況下有更好的方法來排除故障「權限被拒絕訪問屬性文檔T「錯誤:http://stackoverflow.com/questions/7995223/,http://stackoverflow.com/questions/22481340/,等 – paulsm4

+1

我編輯你的正確的建議到我的答案,因爲最高的答案造成這種情況有些,對於評論太多了。 – Noumenon

相關問題