Могу ли я изменить HTML DOM внешнего URL-адреса, загруженного с помощью window.open?

#javascript #jquery #html #dom #window

#javascript #jquery #HTML #dom #окно

Вопрос:

Предположим, у меня есть страница по адресу: www.mydomain.com

когда пользователь нажимает на кнопку, открывается новое окно с помощью :

 newWin = window.open("https://www.otherdomain.com","a","height=800,width=1000");
  

Теперь я хочу изменить некоторые поля на странице. В частности, в новом окне отображается форма, и я хочу иметь возможность автозаполнять форму, используя данные, введенные пользователем в mydomain.com

Возможно ли это?

Если да, то это подводит меня к другому вопросу :

Используя jQuery, как мне вызвать обработчик событий ready() для вновь загруженной страницы?

РЕДАКТИРОВАТЬ: Итак, как указывало здесь большинство парней. Это та же политика происхождения. Могу ли я сделать это любым другим способом. Например, отображать другую страницу во фреймах?

Комментарии:

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

2. Могу ли я сделать это любым другим способом. Например, отображать другую страницу во фреймах?

Ответ №1:

на самом деле у вас нет особого контроля над DOM новых страниц, поскольку он находится в другом домене,

что у вас действительно есть контроль, так это когда вы его закрываете:

итак, допустим, вы хотите закрыть его через 1 минуту, в главном окне вы можете сделать это сейчас:

 setTimout(function(){newWin.close()},60000)
  

но в остальном я не верю, что вы можете многое сделать, кроме отправки вызовов javascript в новое окно, выполнив:

 newWin.open('javascript:alert("Hello");');
  

Ответ №2:

Ну, есть несколько способов:-?

 newWin = window.open("https://www.otherdomain.com","a","height=800,width=1000");
$(newWin).ready(function(){
    alert('New page has ' newWin.document.forms.length ' forms.');
});
  

Комментарии:

1. Подождите, я только что понял, что это другое доменное имя. Пожимает плечами.

2. Это не сработает, поскольку браузер будет применять ту же политику происхождения из-за разницы в домене.

3. @Khez так -1 мне нравится. это работает, только если они находятся в одном домене, lol

4. Могу ли я сделать это любым другим способом. Например, отображать другую страницу во фреймах?

5. Теоретически нет. То, что вы пытаетесь сделать, равносильно межсайтовому скриптингу . Это означает, что большинство веб-браузеров будут запрещать javascript с одного доменного имени доступ к данным с другого доменного имени.