2
var openedWindow = window.open("test.html", "title");

openedWindow.addEventListener("load", function() {
    console.log("received load event");
}, false);

開いているウィンドウから load イベントを取得したい。上記のコードは機能しますが、Opera 11.62 ではコールバック関数が呼び出されません (他のブラウザーでは機能します)。

編集:0ミリ秒のタイムアウト後にイベントを登録すると機能します:

var openedWindow = window.open("test.html", "title");

window.setTimeout(function() {
    openedWindow.addEventListener("load", function() {
        console.log("received load event");
    }, false);
}, 0);
4

1 に答える 1

0

これは Opera の既知のバグのようです。内部バグ レポート (CORE-46278) を少し前に進めました。

私が考えることができる唯一の回避策は、ポップアップの内容からコールバックを追加することです - タイプ opener.popupLoaded()。ただし、これはパフォーマンス上の利点も提供する可能性があります。スクリプト環境の準備が整い、対話したいスクリプトが実行されているときに、load イベントを待つのではなく、ポップアップとの対話を開始できます。

于 2012-05-11T10:03:58.157 に答える