Как я могу загрузить веб-страницу в новое окно и внедрить в нее код JavaScript?

Как с помощью JavaScript открыть новое окно (загрузив, скажем, http://www.google.com в процессе) и внедрить/вставить в его тело этот код:

<script type="text/javascript">alert(document.title);</script>

Я знаю, как открыть новое окно, но я не знаю, как добавить скрипт в новое окно и запустить его:

var ww = window.open('http://www.google.com');

person Community    schedule 21.07.2009    source источник
comment
Я надеюсь, что это просто невозможно. Похоже на огромный риск для безопасности.   -  person jcollum    schedule 22.07.2009


Ответы (4)


Нет. Это нарушит политику одного и того же происхождения, реализованную большинством (всеми?) браузеры для защиты своих пользователей.

Представьте, если бы это было возможно: вы могли бы убедить пользователей зайти на ваш сайт, открыть новое окно, скажем, с загруженным в него веб-сайтом их банка, и внедрить код для кражи их учетных данных. Затем приступайте к краже их денег, личных данных и т. д.

Не хорошо, а? Так что радуйтесь, что это невозможно.


См. также: Политика единого источника для доступа к DOM в Руководстве по безопасности браузера

person Shog9    schedule 21.07.2009

Это работало на консоли firebug:

>>> var x = window.open("");
Window opened
>>> x
Window about:blank
>>> x.document
Document about:blank
>>> x.document.write("<script type='text/javascript'>alert('h1');</script>");
Alert popped up
person gahooa    schedule 21.07.2009
comment
да, это работает, потому что вы создаете пустое всплывающее окно: вместо этого я открываю URL-адрес и хочу добавить код на эту страницу - person ; 21.07.2009

Ваша переменная ww является ссылкой на новый объект окна. Таким образом, ww.window.title будет заголовком окна, которое вы открыли.

Если вы хотите манипулировать своим новым окном, вы должны сделать это через переменную ww.

person Andreas    schedule 21.07.2009

Наилучший подход - использовать ваш веб-сайт (с которого исходит ваш скрипт) в качестве прокси-сервера и загружать для вас соответствующий URL-адрес. Поэтому вы можете изменить ответ на сервере или локально на клиенте.

person zakovyrya    schedule 21.07.2009