#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
мне нравится. это работает, только если они находятся в одном домене, lol4. Могу ли я сделать это любым другим способом. Например, отображать другую страницу во фреймах?
5. Теоретически нет. То, что вы пытаетесь сделать, равносильно межсайтовому скриптингу . Это означает, что большинство веб-браузеров будут запрещать javascript с одного доменного имени доступ к данным с другого доменного имени.