正確に何を達成したいですか?他のウィンドウ内のフォーカスを最初のリンク/ボタン/フォーム フィールドなどに設定するには? または、他のウィンドウ (ブラウザ タブ) をアクティブなブラウザ タブにするには?
とにかくopener.focus()
、両方のウィンドウが同じオリジンから提供されていないため、呼び出しが機能しない可能性があります。これを解決するには、postMessageを介して通信チャネルを設定してみてください。したがって、opener
ドキュメントでは、次のようなイベントをリッスンします。
window.addEventListener('message', function (event) {
window.focus();
}, false);
開いたウィンドウで、次のようなメッセージを送信します。
opener.postMessage('foo', '*');
残念ながら、これが現在機能しているかどうかをテストすることはできません。(そうすべきだとは思いますが…)
ただし、いくつか追加する必要があります。
- 一部の旧式のブラウザは、postMessage をサポートしていません ( caniuse.comを参照)。ただし、回避策はあります。:)
- イベント リスナーのアタッチには、W3 標準の表記法を使用しました。IE8 以下では、独自の
attachEvent
同等のものを使用します。
'*'
オリジン ワイルドカードを、オープナー ウィンドウの実際のオリジンに置き換える必要があります。
- メッセージ イベント リスナー関数では、event.origin を検査し、オリジンが正しい場合にのみ実際のペイロードを実行する必要があります。