JavaScript から Firefox のタブを閉じたい。誤解しないでください。ポップアップウィンドウを閉じようとしているのではなく、タブを閉じようとしています。JavaScript は、開いていないウィンドウを閉じることができないことを知っています。したがって、以下のコードを試しましたが、すべてのブラウザーで機能しますが、Firefox では機能しません。
window.open('','_self','');
Window.close();
JavaScript から Firefox のタブを閉じたい。誤解しないでください。ポップアップウィンドウを閉じようとしているのではなく、タブを閉じようとしています。JavaScript は、開いていないウィンドウを閉じることができないことを知っています。したがって、以下のコードを試しましたが、すべてのブラウザーで機能しますが、Firefox では機能しません。
window.open('','_self','');
Window.close();
単一または少数のユーザーのページがあり、Firefox にアクセスできる場合は、about:config
設定を変更できます。
dom.allow_scripts_to_close_windows = true
これはセキュリティ上の大きな問題になる可能性があります。
(Linux 上の Firefox 27 でテスト済み)
これは、StackOverflow スレッドから学んだことです (残念ながら、この回答へのリンクが見つかりませんでした)。
window.open(document.URL,'_self','resizable=no,top=-245,width=250,height=250,scrollbars=no');
window.close();
ウィンドウ/タブが閉じます。これは、ハックとして特徴付けることができます。基本的に、現在のウィンドウが JavaScript によって開かれたウィンドウ/タブであるとブラウザに認識させます。JavaScript によって開かれたウィンドウを JavaScript が閉じることができるという規則があるように見えるためです。
Chrome、Firefox で動作します。Internet Explorer は、IE 6 から IE 8+ までのさまざまな動作を考慮して、少し特別な処理が必要です。誰かが興味を持っているなら、私もそれを含めています。
var Browser = navigator.appName;
var indexB = Browser.indexOf('Explorer');
if (indexB > 0) {
var indexV = navigator.userAgent.indexOf('MSIE') + 5;
var Version = navigator.userAgent.substring(indexV, indexV + 1);
if (Version >= 7) {
window.open('', '_self', '');
window.close();
}
else if (Version == 6) {
window.opener = null;
window.close();
}
else {
window.opener = '';
window.close();
}
}
else {
window.close();
}
Mozilla Firefox Deverlopers フォーラムによると、現在それは不可能です。以下をお読みください。
「これまで、ウィンドウ インスタンスで close() を呼び出すのではなく、ウィンドウ オブジェクトの close() メソッドを直接呼び出すと、スクリプトがそのウィンドウを作成したかどうかに関係なく、ブラウザーは最前面のウィンドウを閉じました。これはもはや当てはまりません。 ; セキュリティ上の理由から、スクリプトが開いていないウィンドウを閉じることは許可されなくなりました. (Firefox 46.0.1: スクリプトはウィンドウを閉じることができません, それらは開いていませんでした)"