dポイントプレゼントキャンペーン実施中!

こんばんは、お世話になります。

親ウィンドウから、window.openメソッドにて子ウィンドウを開きます。
そして、親ウィンドウから子ウィンドウの要素にaddEventListenerにて何かしらのイベントを設定します。
このとき、親ウィンドウが生きていれば設定したイベントが発生しますが、存在しない(閉じられている)とイベントが発生しなくなってしまうのですが、何故でしょうか?

また、解決策があれば教えていただきたいです


以下、一例です
(子ウインドウのGoogle検索トップページで検索ボックスをクリックするとボックスの背景色をピンクにする)

//childのwindow.nameを持つ子ウインドウを開く
child = window.open("https://www.google.com/?hl=ja" , "child");

//子ウインドウの検索ボックスにクリックイベントを設定
child.document.querySelector("input").addEventListener( "click" , function(){
this.style.backgroundColor = "lightpink";
})

//上記までの状態であれば、意図どおりに動作する
//child.opener.close()などで親ウィンドウを閉じると、設定したイベントが消去されてしまう

A 回答 (1件)

わたしの環境だと、同一オリジンポリシー違反でエラーになりました。



おそらくですが、childがグローバル変数なので、
親のwindowオブジェクトのプロパティとなっているため、
親のwindowオブジェクトが無くなると同時に、
プロパティも消えるためだと思います。

参考:
https://developer.mozilla.org/ja/docs/Glossary/G …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!