2016-06-24 22 views
1
window.open

で開か:Internet Explorerが

var mywindow = window.open('<html page on same domain>'); 

そしてdocsに従って

if (mywindow.addEventListener) { 
    mywindow.addEventListener('load', function() { 
     console.log('load event fired'); 
    }, false); 
} else if (mywindow.attachEvent) { 
    mywindow.attachEvent('onload', function() { 
     console.log('load event fired'); 
    }); 
} 

も< IE9は、互換性のある次のコードは、(IE11およびIEエッジで試験)スローイベントをキャッチしていません。私はHTMLページthe old fashioned wayにカスタムイベントを投げる場合でも:

var event = document.createEvent('Event'); 
event.initEvent('customEvent', true, true); 
window.dispatchEvent(event); 

それがキャッチされないこと...またjQueryを使って、何の成功:

$(mywindow).on("customEvent", function() { 
    console.log('custom event fired'); 
}); 

ChromeとFirefoxのしかしは両方キャッチしませんイベントの種類...

これは仕様です。何か不足していますか?この仕事をするための方法はありますか?

+0

あなたは何をしようとしていますか?可能な "解決策" /回避策としては、手動でポップアップにHTMLを記述する場合、イベントハンドラコードをそこに含めることができます。たとえば、... – CBroe

+0

@CBroe HTMLページをテンプレートとして開こうとしています印刷のために。これはブートストラップリファレンスといくつかのプリントスタイリングがあるきれいなページです。私はそこに生成されたHTMLを印刷用に設定しようとします。 ChromeやFFではうまく動作しますが、IEでは動作しません。それから、私は事件が全く起こされなかったことを知りました。 –

+0

そして、そのシナリオではどのような負荷イベントが必要ですか? (すべてのコンテンツがロードされた後に自動的に 'print'メソッドを呼び出すのであれば、ポップアップ内から行うだけです) – CBroe

答えて

0

明らかに、ロードイベントにハンドラをアタッチする前に、ページが既にロードされていました。

私は、この問題(@CBroeに感謝します)を、window.openで開いたページ上のウィンドウ・ロード・ハンドラで遅延カスタム・イベントをトリガーすることによって解決しました。

私は窓が完全に(それはwindow.onloadでトリガです)にロードされているが、このカスタムイベントにハンドラを取り付けるための速すぎてトリガされていないと確信しているこの方法です。

1秒の遅延が任意に選択されました。これをあなたのニーズに合わせて調整したいかもしれません。