Как я могу определить открыватель окна в IE

Я не смог найти хороших ответов в стеке - они касались диалоговых окон, текстовых редакторов, и один парень использовал VBScript.

Мне нужно отправить сообщение в окно. Это отлично работает в FF, Chrome и Opera, но window.opener является нулевым в IE8-10.

я использую window.open чтобы появилось новое окно.

Я даже попробовал это:

var new_window = window.open( url, '_social', "height=600,width=600" );

if ( !new_window.opener ) {
  new_window.opener = window;
}

Открытое окно просто имеет тег script:

<script type="text/javascript">
var data = {
  type : 'redirect',
  destination : '<?= $destination; ?>'
};
window.opener.postMessage( JSON.stringify( data ), '*' );
window.close();
</script>

Я открыл консоль и вошел window.opener который подходит к нулю, так что я не думаю, что это как-то связано с готовностью DOM или нет.

Окно перенаправляется несколько раз, прежде чем попасть на страницу с тегом script.

2 ответа

Решение

На самом деле, проблема может не иметь ничего общего с window.opener - потому что IE8+ может использовать только postMessage для связи с iframe.

http://blogs.msdn.com/b/ieinternals/archive/2009/09/16/bugs-in-ie8-support-for-html5-postmessage-sessionstorage-and-localstorage.aspx

IE8 не любит пробелы. Удалите их, чтобы это работало:

var new_window = window.open(url,'_social',"height=600,width=600");

if (!new_window.opener) {
  new_window.opener = window;
}
Другие вопросы по тегам