web-dev-qa-db-ja.com

ブラウザウィンドウで現在のタブを閉じる方法

ブラウザ内の他のタブを閉じずに、ブラウザ内の現在アクティブなタブを閉じるリンクをWebページに作成したいです。
ユーザーが閉じるリンクをクリックすると、「はい」と「いいえ」の2つのボタンでユーザーに確認を求める警告メッセージが表示されます。ユーザーが「はい」をクリックした場合はそのページを閉じ、「いいえ」の場合は何もしません。

どうすればそれができますか?助言がありますか?

370
Naveed

これを行うにはJavascriptが必要になります。 window.close() :を使用してください。

close();

注: 現在のタブが暗黙的に指定されています。これは同等です:

window.close();

別のウィンドウを指定することもできます。

そう:

function close_window() {
  if (confirm("Close Window?")) {
    close();
  }
}

hTMLの場合:

<a href="javascript:close_window();">close</a>

または

<a href="#" onclick="close_window();return false;">close</a>

このイベントのデフォルトの動作を防ぐために、ここでreturn falseを使用します。それ以外の場合、ブラウザはそのURLにアクセスしようとします(それは明らかにそうではありません)。

これで window.confirm() ダイアログボックスのオプションはOKとキャンセルになります(はいといいえではありません)。あなたが本当に欲しいならはいといいえ)あなたはある種のモーダルJavascriptダイアログボックスを作る必要があるでしょう。

注: 上記とはブラウザ固有の違いがあります。 Javascriptで(window.open()経由で)ウィンドウを開いた場合は、javascriptでウィンドウを閉じることができます。 Firefoxでは他のウィンドウを閉じることはできません。 IEがユーザーに確認を求めます。他のブラウザは異なる場合があります。

437
cletus

これを試して

<a href="javascript:window.open('','_self').close();">close</a>
231
Daniel Shen

このメソッドはChromeとIEで機能します。

<a href="blablabla" onclick="setTimeout(function(){var ww = window.open(window.location, '_self'); ww.close(); }, 1000);">
    If you click on this the window will be closed after 1000ms
</a>
64
Palesz

私が言うことができる限り、それはもはやChromeやFireFoxでは不可能です。 IE(少なくともEdge以前)でも可能です。

23
Guy Schalnat

可能です。私はこれについてネット全体を検索しました、しかし私がマイクロソフトの調査の1つを取ったとき、私はついに答えを得ました。

これを試して:

window.top.close();

これは現在のタブを閉じます。

16
user3239333

以下はChrome 41で私のために働きます:

function leave() {
  var myWindow = window.open("", "_self");
  myWindow.document.write("");
  setTimeout (function() {myWindow.close();},1000);
}

実際のWebページを開くことを含む、FFのためのいくつかのアイデアを試してみましたが、何もうまくいかないようです。私が理解している限りでは、JSがreallyで開いていれば、どのブラウザでもxxx.close()でタブやウィンドウを閉じることができます。そのタブ。

考えてみるとそれは理にかなっています - ユーザはJSが便利な履歴を持つタブやウィンドウを閉じたくないかもしれません。

6
Thailandian

これも試してください。 3つの主要ブラウザすべてで私のために働いています。

<!-- saved from url=(0014)about:internet -->
<a href="#" onclick="javascript:window.close();opener.window.focus();" >Close Window</a>
6
Bhavin Shah

FF 18とChrome 24で正常にテストされました。

頭に入れる:

<script>
    function closeWindow() {
        window.open('','_parent','');
        window.close();
    }
</script> 

HTML:

<a href="javascript:closeWindow();">Close Window</a>

クレジットは Marcos J. Drake に行きます。

5
Julesfrog

まだこのページにアクセスしている人は、スクリプトORで開いているタブを閉じるには、ターゲット_blankの付いたHTMLのアンカータグを使用する必要があります。どちらも閉じることができます。

<script>
window.close();
</script>
1
killstreet
<button class="closeButton" style="cursor: pointer" onclick="window.close();">Close Window</button>

これは私のために仕事をしました

0
pikax

少し遅れましたが、これは私が見つけたものです...

window.close()は、あなたがclose()しようとしているウィンドウがwindow.open()メソッドを使ったスクリプトによって開かれた場合にのみ機能します(IEは例外です)。

あなたはコンソールエラーを得るでしょう:スクリプトはスクリプトによって開かれなかったウィンドウを閉じないかもしれません。エラーとして、他には何もない。

ページがスクリプトから開かれたかどうかを知るためにURLに一意のパラメータを追加することができます(時間のように) - ただし、単なるハックでネイティブ機能ではないため、失敗になる場合もあります)。

私はページがopen()から開かれたかどうかを知る方法を見つけることができませんでした、そしてcloseはスローされずエラーは起きません。 これは"test"を表示しません:

try{
  window.close();
}
catch (e){
  console.log("text");
}

MDNでclose()関数についてもっと読むことができます

0
calios

これは同じことを解決する1つの方法で、このようなJavaScript関数を宣言します。

<script>
  function Exit() {
     var x=confirm('Are You sure want to exit:');
     if(x) window.close();
   }
</script>

以下の行をHTMLに追加して、<button>を使用して関数を呼び出します。

<button name='closeIt' onClick="Exit()" >Click to exit </Button>
0

私はここに遅刻するかもしれませんが、これはブラウザによって妨げられています。

あなた自身が何度も何度もウィンドウを閉じようとしていて、それがあなたの質問からの " もしないなら "の部分をしているので閉じないのではないか。

これは確かにいらいらさせるでしょう!

0
Muhammad Osama