5

我在堆栈上找不到任何好的答案——它们与对话框、文本编辑器有关,还有一个人使用了 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 type="text/javascript">
var data = {
  type : 'redirect',
  destination : '<?= $destination; ?>'
};
window.opener.postMessage( JSON.stringify( data ), '*' );
window.close();
</script>

我打开控制台并记录window.opener了它出现的空值,所以我认为这与 DOM 是否准备好没有任何关系。

该窗口在登陆带有脚本标签的页面之前会重定向几次。

4

2 回答 2

1

实际上,问题可能与 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

于 2013-09-04T22:19:32.877 回答
0

IE8 不喜欢空格。删除它们以使其工作:

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

if (!new_window.opener) {
  new_window.opener = window;
}
于 2013-09-04T22:02:55.727 回答