2016-05-10 3 views
0

У меня есть ссылка в www.abc.com, щелкая по которой открывается всплывающее окно от www.def.com. В этом всплывающем окне есть www.def.com. После нажатия на кнопку «Сохранить» в форме я хочу, чтобы текущее окно было закрыто , и родитель должен перенаправить на место.window.opener returing null

До этого изменения, когда я показывал форму на www.abc.com, приведенный ниже код работал нормально.

<script language="JavaScript">   
    parent.window.close(); 
    parent.opener.parent.window[1].location.replace('/abc.jsp?custid=12345'); 
</script> 

А теперь "parent.opener" is returning null. Таким образом, я могу закрыть всплывающее окно, но не смог перенаправить родительское окно на отключенное местоположение.

Я знаю, что я прошу, это бит, но это требование.

+0

'def.com' является другой домен. Может потребоваться использование метода postMessage() 'или другого междоменного обмена сообщениями. Вы должны иметь возможность использовать 'document.referrer' в новом' окне' для ссылки на url, который открыл новое окно ' – guest271314

+0

@ guest271314 Yes 'dcoument.referrer', дающее мне URL-адрес, который открыл это новое окно. Но как мне перенаправить в этом окне? – user3714162

+0

См. Https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage – guest271314

ответ

2

В "abc.moc"

<!DOCTYPE html> 
<html> 
<head> 
    <script> 
    // open `popup` 
    var popup = window.open("popup.html", "popup", "width=200,height=200"); 
    // handler `message` event from `popup.html` 
    function receiveMessage(event) { 
     console.log(event, event.data); 
     this.location.href = event.data; 
    } 
    window.addEventListener("message", receiveMessage, false); 
    </script> 
</head> 
<body> 
</body> 
</html> 

на "def.moc"

<!DOCTYPE html> 
<html> 
<head> 
</head> 
<body> 
    <form> 
    <input type="button" value="Save"> 
    </form> 
    <script> 
    console.log(window.opener); 
    var button = document.querySelector("form input[type=button]"); 
    button.onclick = function(e) { 
     e.preventDefault(); 
     e.stopPropagation(); 
     // do stuff with `form` 
     // call `.postMessage()` on `window.opener` with 
     // first parameter URL to redirect `abc.moc`, 
     // second parameter `location.href` of `abc.moc` 
     window.opener.postMessage("redirect.html",  
     window.opener.location.href); 
     // close `popup` 
     window.close(); 
    } 
    </script> 
</body> 
</html> 

plnkr http://plnkr.co/edit/pK4XBJDrqFrE7awvMlZj?p=preview