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

20

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

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

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

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

Ваш Ответ

2   ответа
48

var newWindow = window.open();

а потом делай

newWindow.document.write("ohai");

спасибо, не знал, что ты можешь написать в новом окне kasper Taeymans
Не работает для меня, новая вкладка открыта, но она пуста с about: blank в адресной строке: - (. Blackhex
Я думаю, что это переводится как вызовwindow.open в базовом (небезопасном) окне браузера, в результате чего открытое вами окно будет доступно для сценария на просматриваемой странице. (Вот почему естьGM_openInTab в конце концов, чтобы предотвратить это). Doin
Нет, забудь, что я сказал выше. На самом деле это известная ошибка в GreaseMonkey: сценарии GM рассматривают любую попытку доступа к пустому окну как нарушение политики безопасности того же источника (что не следует делать). Doin
Альтернативно,newWindow.document.body.innerHTML = 'ohai'; тоже подойдет. Pat Migliaccio
9

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);
Требуется редко, и в большинстве ситуаций существуют более эффективные способы устранения ошибок «Отказано в доступе к документу свойства»: Stackoverflow.com / вопросы / 7995223, Stackoverflow.com / вопросы / 22481340, так далее paulsm4
Я отредактировал ваши правильные предложения в моем ответе, так как верхний ответ создает такую ситуацию для некоторых, и это слишком много для комментария. Noumenon

Похожие вопросы