【JavaScript】ウィンドウを閉じる動作はChrome等で動かない
とっさにクライアントから受けた質問であった、ウィンドウを閉じたいけど出来ないからどうすれば良いかというもの。
通常であればJavaScriptで
window.close();
この一行だけで事済みそうなもの。
実は現在この命令はコンソールの内容いわく
「Scripts may close only the windows that were opened by them.」
という英語で一蹴されてしまいます。
訳すと
「スクリプトは、スクリプトによって開かれたウィンドウのみを閉じることができます。」
とのこと。
以前は普通に出来た気がしますけど、どうやら現状、Chromeなど最新ブラウザではJavaScritpによるウィンドウを閉じるという動作は出来ないようです。
これはセキュリティ上の制限のため。
どうやら、そのページで開いたウィンドウ/タブであれば閉じられるようです。
そのページのwindow.open();によって開かれたウィンドウ/タブかどうかを把握して判断しているということでしょうかね。
調べてみると色々ハック処理を施してる記事が多く見られますが、どれも最新Chromeでは動作しません。
ブラウザやタブを開く、閉じるといった処理はユーザーの意思に委ねろということでしょう。
大手銀行のWebシステムなどでも現状「閉じる」ボタンが効かなくなっていたりしているので、どのサイトでも対応に困っているのではないかと思われます。
セキュリティ上、勝手にウィンドウ操作をされてはまずいというのも理解出来ます。
ただ、メールから開いたウィンドウを閉じるなど、求められる処理であることも確か。
なんらかの対応方法を見つけられた方は是非コメントか問い合わせフォームから教えて頂けばありがたいです。
▼JSでの様々な処理がレシピ集として掲載されていて手元にあると便利な一冊。
昔はよく怪しいサイトでウィンドウがめちゃくちゃに開きまくったりクラッシュしたりと焦ったものですので、そういったものへの対策ですかね。
開くのは今でも出来るか。
最後までお読みいただきありがとうございました!
webabc.hatenablog.jpwebabc.hatenablog.jp