JavaScript で window.close するのはあきらめた! [JavaScript]
ようやく、ぶっくま!のブックマークレット(PC用)を公開できました。モバイル用は、これから作ります・・・。
ブックマークレットを作っていて、ハマってしまったので、メモっておきます。
最初、ブックマークレットは、ウインドウ(小窓)を開く仕様にするつもりだったのですが、動作チェックをしていたら、ウインドウを閉じることができないことに気づきました。
ユーザーが手動で閉じることはできますが、JavaScript(ブログラム) から close() しても閉じないということ。しかも、ブラウザの種類やバージョンによって挙動が違う!
なんでできないの?と思って、調べてみたら、
JavaScript の close() を使った攻撃手法があり、
その攻撃を回避するために、各ブラウザが独自で対応している
ということらしいです。
ブラウザの種類やバージョンによって挙動が違うのは、独自に対応しているためですね。
独自に対応しているということは、これからも仕様がコロコロ変わる可能性があるということ。
実際、いままでも(各ブラウザとも)何回か仕様が変わってますし。
裏技的な方法でウインドウを閉じるように作っても、ブラウザのバージョンアップで使えなくなるのはちょっと問題です。
企業などが作っている Webサービスでは、ブラウザを判定して、別々のプログラムを動かしていたりしますが、ブラウザのバージョンアップにあわせて動作をチェックして、プログラムを作り直す作業が発生します。
企業が業務としてやっているなら別ですが、個人がそんなことできません!
ということで、別ウインドウを開くのではなく、別タブを開く仕様に変更しました。
ちょっと使いにくいかもしれませんが、動作しなくなるよりはいいかなと。
ちょうど、各ブラウザのバージョンアップやアップデートが目白押しな時期なので、タイミング的にも悪かったですね。
ブックマークレットを作っていて、ハマってしまったので、メモっておきます。
最初、ブックマークレットは、ウインドウ(小窓)を開く仕様にするつもりだったのですが、動作チェックをしていたら、ウインドウを閉じることができないことに気づきました。
ユーザーが手動で閉じることはできますが、JavaScript(ブログラム) から close() しても閉じないということ。しかも、ブラウザの種類やバージョンによって挙動が違う!
なんでできないの?と思って、調べてみたら、
JavaScript の close() を使った攻撃手法があり、
その攻撃を回避するために、各ブラウザが独自で対応している
ということらしいです。
ブラウザの種類やバージョンによって挙動が違うのは、独自に対応しているためですね。
独自に対応しているということは、これからも仕様がコロコロ変わる可能性があるということ。
実際、いままでも(各ブラウザとも)何回か仕様が変わってますし。
裏技的な方法でウインドウを閉じるように作っても、ブラウザのバージョンアップで使えなくなるのはちょっと問題です。
企業などが作っている Webサービスでは、ブラウザを判定して、別々のプログラムを動かしていたりしますが、ブラウザのバージョンアップにあわせて動作をチェックして、プログラムを作り直す作業が発生します。
企業が業務としてやっているなら別ですが、個人がそんなことできません!
ということで、別ウインドウを開くのではなく、別タブを開く仕様に変更しました。
ちょっと使いにくいかもしれませんが、動作しなくなるよりはいいかなと。
ちょうど、各ブラウザのバージョンアップやアップデートが目白押しな時期なので、タイミング的にも悪かったですね。
コメント 0