Откройте новую вкладку с пользовательским HTML вместо URL

Я создаю сценарий Greasemonkey и хотел бы открыть новую вкладку, в которой будет отображаться не URL, а какой-то HTML, являющийся частью сценария. В общем, я хочу сделать что-то вроде этого (что, очевидно, не работает):

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

Любые советы приветствуются!

 kasper Taeymans13 мая 2012 г., 18:44
Я думаю, что должно быть возможно сделать window.open ('nonexistingURL'). Откроется новая вкладка с браузером по умолчанию «страница не найдена». Должна быть возможность запуска сценариев GM по несуществующему URL. Я попробую это ...

Ответы на вопрос(2)

Решение Вопроса

var newWindow = window.open();

а потом делай

newWindow.document.write("ohai");

 Blackhex26 окт. 2012 г., 13:51
Не работает для меня, новая вкладка открыта, но она пуста с about: blank в адресной строке: - (.
 kasper Taeymans13 мая 2012 г., 18:47
спасибо, не знал, что ты можешь написать в новом окне
 Doin07 сент. 2014 г., 12:53
Я думаю, что это переводится как вызовwindow.open в базовом (небезопасном) окне браузера, в результате чего открытое вами окно будет доступно для сценария на просматриваемой странице. (Вот почему естьGM_openInTab в конце концов, чтобы предотвратить это).
 Doin08 сент. 2014 г., 00:02
Нет, забудь, что я сказал выше. На самом деле это известная ошибка в GreaseMonkey: сценарии GM рассматривают любую попытку доступа к пустому окну как нарушение политики безопасности того же источника (что не следует делать).
 Pat Migliaccio30 авг. 2017 г., 18:41
Альтернативно,newWindow.document.body.innerHTML = 'ohai'; тоже подойдет.

Error: Permission denied to access property "document", видетьэтот вопро о том, как решать проблемы политики того же происхождения, илиэто.

Или быстро и грязно, используйте URI данных:

var html = '<html><head></head><body>ohai</body></html>';
var uri = "data:text/html," + encodeURIComponent(html);
var newWindow = window.open(uri);
 paulsm403 апр. 2016 г., 00:04
Требуется редко, и в большинстве ситуаций существуют более эффективные способы устранения ошибок «Отказано в доступе к документу свойства»: Stackoverflow.com / вопросы / 7995223, Stackoverflow.com / вопросы / 22481340, так далее
 Noumenon03 апр. 2016 г., 02:22
Я отредактировал ваши правильные предложения в моем ответе, так как верхний ответ создает такую ситуацию для некоторых, и это слишком много для комментария.

Ваш ответ на вопрос