IE中的CustomEvent与window.opener

时间:2015-03-10 15:23:00

标签: javascript internet-explorer events dispatchevent window.opener

我几天就遇到了问题。

在firefox上我的代码可以工作,但不能在IE上运行。我有一个窗口,用window.open打开新窗口;在这个新窗口中,我按照自己的意愿行事,之后我想更新父窗口中的特定部分。 在父窗口上,我有:

$(document).on('myEvent', doThis);

第二个窗口上我有了这个(如果可能的话,我不想使用像jQuery这样的其他库):

var event = new CustomEvent("myEvent");
window.opener.document.dispatchEvent(event);
window.close();

在Firefox上,代码似乎没问题,但在IE上它没有用;我试图添加一个CustomEvent polyfill(因为我不支持IE并没有实现CustomEvent),但是我遇到了新问题...... IE不喜欢我的:

window.opener.document.dispatchEvent(event);

如何在我的"揭幕战"上发送活动? (或父母)窗口当我芬兰在我的"揭幕战打开的新窗口中做我想做的事情时#34; (或父母)窗口?

THX。

2 个答案:

答案 0 :(得分:1)

使用jQuery从父级触发事件

var o = window.opener; 
o.$(o.document).trigger("myEvent");

答案 1 :(得分:0)

我使用hashchange事件作为解决方法,因为IE11通常不会将事件触发到window.opener。

window.opener.window.location.hash = (new Date()).getTime().toString() + '&myEvent=true';
window.close();

开瓶器端

window.addEventListener('hashchange', function(){
    if (window.location.hash.indexOf('&myEvent=true') > -1) {
        // fire event on opener
    }
}