window.openerがnullになってしまう

背景と課題

  • 元ウィンドウから、target="_blank" 属性を利用して新ウィンドウを開く
  • 新ウィンドウの window.opener.location.reload(true); という処理で元ウィンドウをリロードする

という処理がある日動かなくなり、次のようなエラーがConsoleに出ていた。

Uncaught TypeError: Cannot read properties of null (reading 'location')

解決策

元ウィンドウのリンクに、rel="opener" 属性を追加する。ただし、リンク先は自身が管理しているページだけにすること。

どうやらブラウザのセキュリティ仕様のせいで、仕様が変わったみたい。

<a href="/foobar.html" target="_blank" rel="opener" >新たにウィンドウを開く</a>