確認ボックスなしでIE6、IE7、IE8、Firefoxを閉じるJavaScript
質問
ユーザーがクリックすると、確認ダイアログボックスなしでブラウザーを閉じるリンクまたはボタンが必要だとします。
Internet Explorer 6、7、8、Firefoxで動作する必要があります。
解決
いくつかの調査を行った結果、Firefoxでウィンドウ/タブがJavaScriptで開かない場合、またはタブに履歴ページがある場合は、ウィンドウ/タブを閉じることができないことがわかりました> 1(つまり、Webページを閲覧しているためクリック可能な戻るボタン)。
Firefoxで行う方法:最初に履歴を削除します。その後、確認ボックスなしでウィンドウを閉じることができます。私はこの解決策を試していません。これを行う方法を説明する複数の信頼できるページを読んでいます。
Internet Explorer 6、7、8のソリューション
ブラウザ検出機能の少しの助けを借りて: http://www.quirksmode.org/js /detect.html では、複数のIEバージョンの確認ボックスなしでウィンドウを閉じる方法を示します。
if ((userBrowser.browser == "Explorer" && (userBrowser.version == "8" || userBrowser.version == "7"))) {
window.open('', '_self', '');
window.close();
} else if ((userBrowser.browser == "Explorer" && userBrowser.version == "6")) {
window.opener = null;
window.close();
} else {
window.opener = '';
window.close(); // attempt to close window first, show user warning message if fails
alert("To avoid data corruption/loss. Please close this window immedietly.");
}
ブラウザ検出を使用するのは良い考えではないと考える人がいるかもしれません。また、多くの人は、ユーザーにウィンドウを強制的に閉じることは悪いことだと考えています。私はそれらの考えに同意します。しかし、必要なのはソフトウェアの要件のためだけです。
これがお役に立てば幸いです。
他のヒント
これは重大なセキュリティ侵害になります。これを行うことはできません。
ただし、親が開いた子ウィンドウを閉じることはできます。親ウィンドウでポップアップを開いたとします。同じ親ウィンドウに子を閉じるボタンがあります。決してブラウザ。
ここでの問題の一部は、あなたが質問の目標についてはっきりしていないことだと思います。 Frankieの回答に対するコメントから、ウィンドウを閉じる必要はまったくないようです。ウィンドウで利用可能なコンテンツを保護するだけです。
こちらがお勧めです:
- (サーバー側の)タイムアウトに基づいてログインセッションを強制終了します。タイムアウトになると、ページのリロードはログインページにのみリダイレクトされます。
- クライアント側で、タイムアウト条件を定期的に確認し、ログインページにリダイレクトするか、またはその他の保護が不要なページにリダイレクトします。
率直に言って、通常、タブを閉じたり、とにかく閲覧したりする瞬間まで、ユーザーをサイトにとどめておく方が良いでしょう。タブを強制的に閉じようとするのではなく、安全である必要のないランディングページにリダイレクトするだけです。