2017-01-26 4 views
0

私はIE11に問題があります:私はjsで新しいウィンドウを開き、古いウィンドウでイベントをバインドします。しかし、古いウィンドウがアクティブでない場合は動作しません。タブをすばやく切り替えると、作業が終了し、window.blurを使用して新しいタブからフォーカスを削除しても機能します。InternetExplorer 11が非アクティブなタブでイベントを起動しないのはなぜですか?

私のコードがあります:

var win = window.open(url); 
//win.blur(); trash solution 
this.bindLoadEvent(win, function() { 
    element.invoke(); 
}); 

bindLoadEvent: function (win, handler) { 
    if (win.addEventListener) { 
      win.addEventListener('load', handler, true); 
    } else { 
      win.attachEvent('onload', handler); 
    } 
} 

にですIEがアクティブでないタブでイベントを発生しないように思えます。

P.S.また、FirefoxとChromeでテストしました。素晴らしい作品です。

+0

この記事が見つかりました:https://msdn.microsoft.com/en-us/library/ms537636(v=vs.85).aspxしかし、私はまだイベントを発生させることはできません – gado

答えて

0

ハンドラーを接続する前にロードイベントが発生することがあります。

では、イベントハンドラをアタッチする前に、ウィンドウがすでにロードされているかどうかを確認してください:

bindLoadEvent = function (win, handler) { 
    if (win.document.readyState === "complete") { 
     setTimeout(handler, 0); 
    } else if (win.addEventListener) { 
     win.addEventListener('load', handler, true); 
    } else { 
     win.attachEvent('onload', handler); 
    } 
    }; 

詳細についてはHow to detect if document has loaded (IE 7/Firefox 3)Detecting the onload event of a window opened with window.open質問をご確認ください。

関連する問題