ちょっとわけあってタブ(もしくはウィンドウ)をただ閉じるだけのHTMLを作る必要があったのでそのメモ。
最初、タブを閉じるのはwindow.close()を呼んだらいいだけなので、下記のようにすればできるだろうと思っていました。
<!DOCTYPE html> <html> <body onload="window.close()"> </body> </html>
実行サンプル(短いのでBase64のData URIを利用しています)
しかし、Chromeでこのページを開いてみるとタブを閉じてくれません(他のブラウザを試したわけではないです。iOSのSafariで試してみましたがそれもダメでした)。試しにChromeの開発者ツールのコンソール画面で確認すると、下記のように書かれていました。
Scripts may close only the windows that were opened by it.
自分のない英語力で読解してみると、ただウィンドウを閉じるだけとかいうことが書かれているのだと思います(ちなみに、エキサイト翻訳で翻訳してみたけっか、「スクリプトは、それによって開かれたウィンドウだけを閉じるかもしれません。」となった)。
ということは、いろいろな処理をいれると閉じてくれるのだろうか。と思ったけれども、まずは上記の英文でGoogle検索してみることに。
Scripts may close only the windows that were opened by it. – Google 検索
英文で検索しているので、英語のページばかりヒットします。タイトル見てもいったいどれが自分の求めている情報に近いかわからないので、とりあえずGoogleを信じて一番上のページを開くことに。
javascript – window.close and self.close do not close the window in Chrome – Stack Overflow
たどりついた先は、プログラミングをやっていて困った時に検索するとやたらヒットするStack Overflowのサイト。英語は苦手なので、英語は読まずにソースコードを探してみると、ありました。”open(location, ‘_self’).close();”とすればいいようです。
<!DOCTYPE html> <html> <body onload="open(location, '_self').close();"> </body> </html>
これで無事、タブをただ閉じるだけのHTMLを作成することができました。
今回に限らず、英語が苦手でも、とりあえず表示された英文のエラー文や警告文で検索してヒットしたページからソースコードを探してみるだけでなんとか解決することって、意外とあります。
というわけで、何か英語でエラーがでたとしてもあわてず、ググってみることにしましょう。案外すぐ解決するかもしれません。
コメント