「このウィンドウを閉じますか?」というプロンプトが表示されずにブラウザウィンドウを閉じるにはどうすればよいですか?


86

このウィンドウを閉じますか?プロンプトを受け取らずにブラウザウィンドウを閉じるにはどうすればよいですか?

window.close();関数を使用するとプロンプトが表示されます。


22
最も簡単:window.open('','_self').close()
markasoftware 2013年

Firefoxでは、ユーザーがウィンドウを閉じることを無効にすると、これはすべて意味がない可能性があります。kb.mozillazine.org/…–
ブライアン

3
あなたが自分で窓を所有していない限り、あなたはそうすべきではありません。
ロバートハーベイ

もはや不可能です。 stackoverflow.com/a/19768082/391101
harvest316

回答:


85
window.open('', '_self', ''); window.close();

これは私にとってはうまくいきます。


IE11、Safary 5.1.7で動作しますが、FFとChromeでは動作しません。
nikolai.serdiuk 2014年

Firefox38.0.5およびChrome43での作業
justanotherprogrammer 2015年

を使用してウィンドウを開いた場合はどうなりますshowModalDialogか?IE10では機能しません
bjan

これがすべてのブラウザで機能するかどうかはわかりませんが、IE11では機能します!!! 現在、これを構築する必要のあるブラウザです。この答えをありがとう、あなたは私に多くのトラブルを救った。
CrazyPaste 2017年

IE 11、Chrome 76.0.3809、Firefox 69.0で正常に動作
RahulMahadik19年

57

私の友人...方法はありますが、「ハック」はそれを説明し始めません。基本的に、IE6および7のバグを悪用する必要があります。

毎回動作します!

を呼び出す代わりにwindow.close()、別のページにリダイレクトします。

オープニングページ:

alert("No whammies!");
window.open("closer.htm", '_self');

別のページにリダイレクトします。これはIEをだまして、このページのブラウザを閉じさせます。

クロージングページ:

<script type="text/javascript">
    window.close();
</script>

すごいね!


1
もう2年になります。しかし、それは驚くべきことです。IE8とFirefox 15で動作します
Susie

9
MicrosoftがIE10でこのバグを修正したようです。IE10でこれを実現する方法を知っている人はいますか?
Abhi Rampal 2013年

self.close()とwindow.close()の両方が私の側のIEでは機能しません。ただし、Chrome、FF、Safariは問題あり
ません

57

スクリプトは、ユーザーが開いたウィンドウを閉じることできません。これはセキュリティリスクと見なされます。標準にはありませんが、すべてのブラウザベンダーがこれに従います(Mozilla docs)。一部のブラウザでこれが発生した場合、(理想的には)非常に迅速にパッチが適用されるのはセキュリティバグです。

この質問に対する回答のハックはいずれも機能しなくなり、誰かが別のダーティハックを思いついた場合、最終的には機能しなくなります。

これと戦うためにエネルギーを無駄にせず、ブラウザが非常に役立つ方法を採用することをお勧めします。ページがクラッシュする前に、ユーザーに尋ねてください。


5
または、さらに簡単です。ウィンドウをまったく閉じないでください。完了したら、ユーザーをホームページまたは他の種類の中央の場所に送り返します。
duskwuff -inactive- 2014

2
@ duskwuff、これらのブラウザに対して自動テストを実行しています。彼らは閉じる必要があります。
ouflak 2017

2
@ouflak確かに、テストフレームワークにはウィンドウを操作する方法があります。
duskwuff -inactive- 2017

1
@duskwuffウィンドウを置いたままにするサードパーティのライブラリはどうですか?確かに、私がその混乱をユーザーに任せたり、ホームページの(重複した)ビューにリダイレクトしたりすることを提案することはできません。
放棄されたカート

1
脚注として、セキュリティリスクである理由についても説明していただけますか。
T.Todua

31

これは、プロンプトや警告なしでブラウザを閉じるために使用するJavascript関数です。これは、Flashから呼び出すこともできます。それはhtmlファイルにあるべきです。

    function closeWindows() {
         var browserName = navigator.appName;
         var browserVer = parseInt(navigator.appVersion);
         //alert(browserName + " : "+browserVer);

         //document.getElementById("flashContent").innerHTML = "<br>&nbsp;<font face='Arial' color='blue' size='2'><b> You have been logged out of the Game. Please Close Your Browser Window.</b></font>";

         if(browserName == "Microsoft Internet Explorer"){
             var ie7 = (document.all && !window.opera && window.XMLHttpRequest) ? true : false;  
             if (ie7)
             {  
               //This method is required to close a window without any prompt for IE7 & greater versions.
               window.open('','_parent','');
               window.close();
             }
            else
             {
               //This method is required to close a window without any prompt for IE6
               this.focus();
               self.opener = this;
               self.close();
             }
        }else{  
            //For NON-IE Browsers except Firefox which doesnt support Auto Close
            try{
                this.focus();
                self.opener = this;
                self.close();
            }
            catch(e){

            }

            try{
                window.open('','_self','');
                window.close();
            }
            catch(e){

            }
        }
    }

IE 10.0.9200では、を使用してウィンドウを開きますshowModalDialog。でcloseWindows、前のウィンドウが開いている間に新しいウィンドウ(同じページ)が開きます。
bjan 2016年

Firefoxでは機能しませんでした。IE/ Edgeは確認プロンプトを表示しましたが、Chromeでは機能しました。
ダイマス

12

これは、Chrome 26、Internet Explorer 9、Safari 5.1.7で機能します(ヘルパーページを使用せずに、Ala Nickの回答):

<script type="text/javascript">
    window.open('javascript:window.open("", "_self", "");window.close();', '_self');
</script>

ネストされているのwindow.openは、IEに「このウィンドウを閉じますか」というプロンプトが表示されないようにするためです。

残念ながら、Firefoxでウィンドウを閉じることはできません。


IE10でも動作しました。
粘液2018

11

bodyタグ内:

<body onload="window.open('', '_self', '');">

ウィンドウを閉じるには:

<a href="javascript:window.close();">

Safari 4.0.5、Mac 3.6のFF、IE 8.0、およびWindows3.5のFFでテスト済み


それはニックがしたのと機能的に同じことです。
naugtur 2010

はい。Nickの投稿を正しく読んでいる場合、彼はwindow.closeを呼び出す前にリダイレクトを提案します。私が投稿したのは、リダイレクトを使用したくない場合です。ニックの投稿の謝罪を読み間違えた場合。
JimB 2010

7

セキュリティ上の理由から、ウィンドウはJavaScriptで開かれた場合にのみJavaScriptで閉じることができます。ウィンドウを閉じるには_self、ターゲットとして新しいウィンドウを開く必要があります。これにより、現在のウィンドウが上書きされ、そのウィンドウが閉じられます(JavaScriptで開いたために実行できます)。

window.open('', '_self', '');
window.close();

これはSilverlightで機能しました:HtmlPage.Window.Eval( "window.open( ''、 '_ self'、 ''); window.close();");
Mike Fuchs

6

ここから:

<a href="javascript:window.opener='x';window.close();">Close</a>

あなたはwindow.opener何かに設定する必要があります、さもなければそれは文句を言います。


クロム、FFとIE 10にほぼ7年後、私の作品
マイクDevenney

6

window.open('', '_self', '').close();

ここで少し遅れて申し訳ありませんが、少なくとも私の場合は、解決策を見つけました。Safari11.0.3およびGoogleChrome64.0.3282.167でテスト済み


5

IEのセキュリティ強化により、スクリプトで開かない限りウィンドウを閉じることはできません。したがって、これを回避する方法は、このページがスクリプトを使用して開かれているとブラウザに認識させてから、ウィンドウを閉じることです。以下は実装です。

これを試してみてください、それは魅力のように機能します!
javascriptはプロンプトIEなしで現在のウィンドウを閉じます

<script type="text/javascript">
function closeWP() {
 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();
 }
}
</script>

javascriptはプロンプトIEなしで現在のウィンドウを閉じます


2

JavaScript関数を作成する

<script type="text/javascript">
    function closeme() {
        window.open('', '_self', '');
        window.close();
    }
</script>

このコードを記述して、上記のJavaScript関数を呼び出します。

<a href="Help.aspx" target="_blank" onclick="closeme();">Help</a>

または単に:

<a href="" onclick="closeme();">close</a>

2

これは機能します:

<script type="text/javascript">
function closeWindowNoPrompt()
{
window.open('', '_parent', '');
window.close();
}
</script>

PythonEelのChrome実装を使用して動作しました。
revliscano


0

JavaScriptを使用して、JavaScriptで開かれていないウィンドウを閉じているため、ブラウザが文句を言っていますwindow.open('foo.html');


0

私が見つけた最善の解決策は次のとおりです。

this.focus();
self.opener=this;
self.close();

0

次のコードをASPXに配置します。

<script language=javascript>
function CloseWindow() 
{
    window.open('', '_self', '');
    window.close();
}
</script>

ボタンクリックイベントの背後にあるコードに次のコードを配置します。

string myclosescript = "<script language='javascript' type='text/javascript'>CloseWindow();</script>";

Page.ClientScript.RegisterStartupScript(GetType(), "myclosescript", myclosescript);

閉じる前に処理がない場合は、次のコードをASPX自体のボタンクリックタグに直接配置できます。

OnClientClick="CloseWindow();"

お役に立てれば。


質問は単純なjavascriptソリューションを求めています。ASPXは避けてください。
Zeeshan 2015

@Zeeshan:塩に値する開発者なら誰でも、KamleshkumarGujarathiの投稿の上部にあるJavaScriptを自分の要件に適用できることがわかります。あなたが彼の答えに反対票を投じた場合、少し厳しいです。
ポール

0

私の状況では、次のコードがphpファイルに埋め込まれていました。

var PreventExitPop = true;
function ExitPop() {
  if (PreventExitPop != false) {
    return "Hold your horses! \n\nTake the time to reserve your place.Registrations might become paid or closed completely to newcomers!"
  }
}
window.onbeforeunload = ExitPop;

だから私はコンソールを開いて次のように書いた

PreventExitPop = false

これで問題は解決しました。したがって、JavaScriptコードを見つけて変数を見つけ、それらを適切な「値」(私の場合は「false」)に割り当てます。


-3

これは私が現在私のサイトで使用しているものであり、ポップアップメッセージを受信せずにGoogleChromeとIE10の両方で機能するため、これを投稿します。

<html>
    <head>
    </head>
    <body onload="window.close();">
    </body>
</html>

自分のサイトに、新しいページに直接移動せずにオン/オフ変数をセッションに保存するために実行したい関数があるので、小さなポップアップWebページを開くだけです。そのWebページは、onload="window.close();"関数を使用してすぐに閉じます。


はい:しかしstackoverflow.com/a/24854246/2239406情報のように:あなたはjavascriptでwindoを開き、次にjavascriptで閉じることができます。
Denis Chenu 2015年

まあ、それが動作するはずがなく、これが「パッチ」されている場合でも、私のPCのすべてのブラウザで必ず動作します。私は単に現在私のために働いている解決策を提供していました。
Logan Hasbrouck 2015年

違いは、JSでウィンドウを開くことです。JSでウィンドウが開かない場合:機能しません。
Denis Chenu 2015年

いいえ、ウィンドウを開くためにJSを使用していません。むしろ、awithtarget=_blankを使用して特定のURLで小さなポップアップウィンドウを開き、最後にJSを使用してウィンドウを閉じています。目的は、特定のURLがセッションに値を保存して背景画像を無効にすることですが、ajaxの実行方法がわかったら、すぐにajaxを優先して削除します。(まだロープの説教を学んでいます)
Logan Hasbrouck
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.