2013-04-15 2 views
0

Im используя этот код, чтобы продемонстрировать концепцию на тех же доменах:Отправка информации для родителей, когда всплывающее окно закрывается, междоменное

Родитель:

<html> 
    <body> 
<form> 
    <input id="details" name="details"> 
    <input type="button" name="choice" onClick="window.open('http://domainB.com/popuppage.html','popuppage','width=850,toolbar=1,resizable=1,scrollbars=yes,height=700,top=100,left=100');" value="Open popup"> 
</form> 
</body> 
</html> 

И всплывающий файл:

<html> 
<head> 
</head> 
<body> 
<SCRIPT LANGUAGE="JavaScript"> 
<!-- Begin 
function sendValue (s){ 
var selvalue = s.value; 
window.opener.document.getElementById('details').value = selvalue; 
window.close(); 
} 
// End --> 
</script> 
<form name="selectform"> 
<input name="details" value=""> 
<input type=button value="Copy input to parent opener" onClick="sendValue(this.form.details);"> 
</form> 
</body> 
</html> 

Это отлично работает, но поскольку всплывающее окно делает модификацию содержимого родительской страницы window.opener.document.getElementById('details').value = selvalue;, это не будет работать на примере crossdomain из соображений безопасности. Я не хочу изменять контент для родителя, я просто хочу передать значение родительскому скрипту, поэтому мне нужен сценарий прослушивателя для родителя, который будет посещать информацию, отправленную из всплывающего окна. Это возможно? альтернативы?

+0

Почему ваш выбор на другом домене? Вы не можете сделать одну и ту же страницу в одном домене? – Joseph

+0

Я не могу, это должен быть кросс-домен – DomingoSL

+1

Это может быть выбор: https://developer.mozilla.org/en-US/docs/DOM/window.postMessage – Passerby

ответ

1

Как предложил Пассерби, postMessage (https://developer.mozilla.org/en-US/docs/DOM/window.postMessage) - идеальное решение для того, что вы хотите сделать. Поскольку он не работает в старых браузерах, вам придется либо ограничить свой материал новыми браузерами, либо использовать хаки с iframe и т. П. Для достижения междоменной связи.

Вы можете запустить easyXDM во всплывающем окне и загрузить его в adrame domainA.com, а затем из этого iframe вы сможете получить доступ и манипулировать другой страницей на domainA.com, которая инициировала всплывающее окно.

Смежные вопросы