ब्राउज़र विंडो में करंट टैब कैसे बंद करें?


434

मैं एक वेबपेज पर एक लिंक बनाना चाहता हूं जो ब्राउज़र में अन्य टैब को बंद किए बिना ब्राउज़र में वर्तमान में सक्रिय टैब को बंद कर देगा।
जब उपयोगकर्ता करीबी लिंक पर क्लिक करता है, तो एक चेतावनी संदेश उपयोगकर्ता को दो बटन, "हाँ" और "नहीं" के साथ पुष्टि करने के लिए कहना चाहिए। यदि उपयोगकर्ता "YES" पर क्लिक करता है, तो उस पृष्ठ को बंद करें और यदि "NO", कुछ भी नहीं करें।

यह कैसे किया जा सकता है? कोई सुझाव?


मुझे यहां आने में देर हो सकती है लेकिन इसे ब्राउज़र द्वारा एक कारण से रोका जाता है। <br> <br> अपने आप को बार-बार एक खिड़की को बंद करने की कोशिश कर रहा है और यह आपके प्रश्न के " अगर नहीं " भाग के रूप में बंद कर रहा है जो 'कुछ नहीं' है। <br> यह सुनिश्चित करने के लिए परेशान हो जाएगा!
मुहम्मद ओसामा

जवाबों:


502

ऐसा करने के लिए आपको जावास्क्रिप्ट की आवश्यकता होगी। उपयोग करें 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()डायलॉग बॉक्स पर विकल्प ठीक होगा और रद्द करें (हां और नहीं नहीं)। यदि आप वास्तव में हां चाहते हैं और आपको किसी प्रकार का मॉड्युलर जावास्क्रिप्ट डायलॉग बॉक्स बनाने की आवश्यकता नहीं है।

नोट: ऊपर के साथ ब्राउज़र-विशिष्ट अंतर है। यदि आपने जावास्क्रिप्ट (के माध्यम से window.open()) के साथ विंडो खोली है, तो आपको जावास्क्रिप्ट के साथ विंडो को बंद करने की अनुमति है। फ़ायरफ़ॉक्स आपको अन्य विंडो बंद करने से रोकता है। मुझे विश्वास है कि IE पुष्टि के लिए उपयोगकर्ता से पूछेगा। अन्य ब्राउज़र भिन्न हो सकते हैं।


386
आप जावास्क्रिप्ट के माध्यम से किसी भी टैब को बंद नहीं कर सकते। "इस पद्धति को केवल उन विंडो के लिए कॉल करने की अनुमति है जो स्क्रिप्ट के द्वारा window.open पद्धति का उपयोग करके खोली गई थीं।" दूसरे शब्दों में, आप जावास्क्रिप्ट का उपयोग केवल उस विंडो / टैब को बंद करने के लिए कर सकते हैं, जिसे जावास्क्रिप्ट के माध्यम से देखा गया था।
रयान जॉय

7
-1 क्रोम को काम नहीं करता है 30 पीसी वर्तमान टैब में एक विंडो खोलने के लिए अन्य उत्तर दिखा रहा है और फिर इसे बंद करें
markasoftware

2
में about:config dom.allow_scripts_to_close_windows = trueहो सकता है फ़ायरफ़ॉक्स में समाधान (एक बड़ा सुरक्षा जोखिम हो सकता है!)
Nepomuk Frädrich

6
ब्राउज़र इस व्यवहार की अनुमति नहीं देता है। जावास्क्रिप्ट केवल एक टैब को बंद कर सकता है जिसे उसने खोला था।
एडवर्ड कैनेडी

1
: (कम से कम) यह काम करता है क्रोम 62 में <button type="button" onclick="window.open('', '_self', ''); window.close();">Discard</button> भी देखें यह लेख
Hering

247

इसे इस्तेमाल करे

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

2
फ़ायरफ़ॉक्स 31.0 में काम कर रहा है
एड्रियन कार

1
इस समाधान का बुरा पक्ष यह है कि सर्वर को एक अनुरोध प्राप्त होता है। लेकिन दूसरी तरफ, मुझे कोई और समाधान नहीं मिला।
१००r

18
क्रोम कंसोल से ऐसा करने से आउटपुट "लिपियों को केवल उसी विंडो को बंद कर सकता है जो इसके द्वारा खोला गया था"
पार्लियामेंट

काम नहीं करता है। लिपियां केवल उन खिड़कियों को बंद कर सकती हैं जिन्हें इसके द्वारा खोला गया था।
रोमन लोसेव

1
क्रोम में काम नहीं कर रहा है 60.0.3079.0: "लिपियां केवल उन खिड़कियों को बंद कर सकती हैं जो इसके द्वारा खोली गई थीं।"
Our_Benefactors

65

यह विधि 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>

56
सरल:open(location, '_self').close();
unnbɐɥs

यह IE 11 में अच्छी तरह से काम करता है, लेकिन
यान दुरान

31

जहां तक ​​मैं बता सकता हूं, यह क्रोम या फायरफॉक्स में अब संभव नहीं है। यह अभी भी IE (कम से कम प्री-एज) में संभव हो सकता है।


2
: (कम से कम) यह काम करता है क्रोम 62 में <button type="button" onclick="window.open('', '_self', ''); window.close();">Discard</button> भी देखें यह लेख
Hering

@ हिअरिंग वेल, यह लेख 2006 का है, लेकिन अगर आपको कुछ ऐसा मिला है जो काम करता है, तो यह बहुत अच्छी खबर है और शायद इससे पढ़ने वाले लोगों को मदद मिलेगी। साझा करने के लिए धन्यवाद।
गाई श्लेनट

प्रश्न उस टैब के भीतर से वर्तमान सक्रिय टैब को बंद करने के बारे में था। जैसा कि आप कहते हैं, यह क्रोम या फ़ायरफ़ॉक्स में संभव नहीं है। यह स्वीकृत उत्तर होना चाहिए।
9

14

हो सकता है। मैंने इसके लिए पूरा नेट खोजा, लेकिन एक बार जब मैंने microsoft के सर्वे में से एक लिया, तो मुझे आखिरकार जवाब मिल गया।

इसे इस्तेमाल करे:

window.top.close();

यह आपके लिए वर्तमान टैब को बंद कर देगा।


12
"लिपियाँ केवल उन खिड़कियों को बंद कर सकती हैं जो इसके द्वारा खोली गई थीं।" क्रोम 50 पर।
हस्की

7

FF 18 और Chrome 24 में सफलतापूर्वक परीक्षण किया गया:

सिर में डालें:

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

HTML:

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

क्रेडिट्स मार्कोस जे ड्रेक के पास जाते हैं


क्रोम पर बकाया नहीं है "लिपियाँ केवल उन खिड़कियों को बंद कर सकती हैं जिन्हें इसके द्वारा खोला गया था।"
सेसर लियोन

7

इसे भी आजमाएं। सभी तीन प्रमुख ब्राउज़रों पर मेरे लिए काम करना।

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

फ़ायरफ़ॉक्स क्वांटम 68.0.1
Zeke

7

Chrome 41 में मेरे लिए निम्नलिखित काम करता है:

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

मैंने FF के लिए एक वास्तविक वेब-पेज खोलने सहित कई विचारों की कोशिश की है, लेकिन कुछ भी काम नहीं करता है। जहां तक ​​मैं समझता हूं, कोई भी ब्राउज़र xxx.close () के साथ एक टैब या विंडो को बंद कर देगा, अगर वह वास्तव में JS द्वारा खोला गया था , लेकिन FF, कम से कम, उस टैब के अंदर नई सामग्री को खोलकर एक टैब को बंद नहीं किया जा सकता है।

जब आप इसके बारे में सोचते हैं तो यह समझ में आता है - एक उपयोगकर्ता अच्छी तरह से नहीं चाहता कि जेएस एक टैब या खिड़की को बंद कर दे जिसमें उपयोगी इतिहास हो।


क्रोम: 'अनकैप्ड टाइपर्रर: नॉट की प्रॉपर्टी' इनर HTML 'सेट नहीं कर सकता है
फ्रांसिस्को कॉर्लेस मोरालेस

5

इसे necroposting के लिए क्षमा करें, लेकिन मैंने हाल ही में एक स्थानीय रूप से होस्ट की गई साइट को कार्यान्वित किया है, जिसे वर्तमान ब्राउज़र टैब को बंद करने की क्षमता की आवश्यकता थी और कुछ दिलचस्प वर्कअराउंड पाए गए जो कि मुझे कहीं भी अच्छी तरह से प्रलेखित नहीं हैं, इसलिए मुझे ऐसा करने के लिए खुद पर ले लिया।

नोट: ये वर्कअराउंड स्थानीय रूप से होस्ट की गई साइट को ध्यान में रखते हुए किए गए थे, और (एज को छोड़कर) ब्राउज़र को विशेष रूप से कॉन्फ़िगर करने की आवश्यकता है, इसलिए सार्वजनिक रूप से होस्ट की गई साइटों के लिए यह आदर्श नहीं होगा।

संदर्भ: अतीत में, jQuery स्क्रिप्ट window.close()अधिकांश ब्राउज़र पर समस्या के बिना वर्तमान टैब को बंद करने में सक्षम थी। हालांकि, आधुनिक ब्राउज़र अब इस स्क्रिप्ट का समर्थन नहीं करते हैं, संभवतः सुरक्षा कारणों से।

गूगल क्रोम:

Chrome, window.close () स्क्रिप्ट को चलाने की अनुमति नहीं देता है और यदि आप इसका उपयोग करने का प्रयास करते हैं तो कुछ भी नहीं होता है। Chrome प्लगइन टैम्परमॉन्की का उपयोग करके हालांकि हम विंडो.क्लास () विधि का उपयोग कर सकते हैं यदि आप // @grant window.closeटैम्परमॉन्की के उपयोगकर्तास्क्रिप्ट हेडर में शामिल हैं।

उदाहरण के लिए, मेरी स्क्रिप्ट (जो तब चालू होती है जब id = 'close_page' वाला बटन क्लिक किया जाता है और यदि ब्राउज़र पॉपअप पर 'हां' दबाया जाता है) ऐसा दिखता है:

// ==UserScript==
// @name         Close Tab Script
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Closes current tab when triggered
// @author       Mackey Johnstone
// @match        http://localhost/index.php
// @grant        window.close
// @require      http://code.jquery.com/jquery-3.4.1.min.js
// ==/UserScript==

(function() {
    'use strict';
    $("#close_page").click(function() {
        var confirm_result = confirm("Are you sure you want to quit?");
        if (confirm_result == true) {
            window.close();
        }
    });
})();

नोट: यह समाधान केवल टैब को बंद कर सकता है यदि यह अंतिम टैब खुला नहीं है। इतनी प्रभावी रूप से, यह टैब को बंद नहीं कर सकता है यदि यह अंतिम टैब खुला होने के कारण विंडो को बंद कर देगा।

फ़ायरफ़ॉक्स:

फ़ायरफ़ॉक्स में एक उन्नत सेटिंग है जिसे आप स्क्रिप्ट को विंडोज़ को बंद करने की अनुमति दे सकते हैं, प्रभावी रूप से window.close()विधि को सक्षम करने में । सक्षम करने के लिए इस सेटिंग के बारे में जाने के लिए : कॉन्फ़िगर करें तब खोज करें और dom.allow_scripts_to_close_windows वरीयता खोजें और इसे असत्य से सत्य पर स्विच करें।

यह आपको window.close()किसी अन्य स्क्रिप्ट के रूप में सीधे अपनी jQuery फ़ाइल में विधि का उपयोग करने की अनुमति देता है ।

उदाहरण के लिए, यह स्क्रिप्ट सत्यता के लिए प्राथमिकता के साथ पूरी तरह से काम करती है:

<script>
  $("#close_page").click(function() {
    var confirm_result = confirm("Are you sure you want to quit?");
    if (confirm_result == true) {
      window.close();
    }
  });
</script>

यह क्रोम वर्कअराउंड की तुलना में बहुत बेहतर काम करता है क्योंकि यह उपयोगकर्ता को वर्तमान टैब को बंद करने की अनुमति देता है, भले ही वह एकमात्र टैब खुला हो, और उसे तीसरे पक्ष के प्लगइन की आवश्यकता नहीं होती है। हालांकि एक नकारात्मक पक्ष यह है कि यह इस स्क्रिप्ट को विभिन्न वेबसाइटों द्वारा चलाने में सक्षम बनाता है (न कि सिर्फ एक जिसे आप इसे इस्तेमाल करने के लिए इच्छुक कर रहे हैं) इसलिए यह संभावित रूप से एक सुरक्षा खतरा हो सकता है, हालांकि मैं कल्पना नहीं कर सकता कि वर्तमान टैब को बंद करना विशेष रूप से खतरनाक है।

एज:

निराशाजनक रूप से एज ने वास्तव में मेरे द्वारा की गई सभी 3 ब्राउज़रों में से सर्वश्रेष्ठ प्रदर्शन किया, और window.close()किसी भी कॉन्फ़िगरेशन की आवश्यकता के बिना विधि के साथ काम किया । जब window.close()स्क्रिप्ट चलाई जाती है, तो एक अतिरिक्त पॉपअप आपको सचेत करता है कि पृष्ठ वर्तमान टैब को बंद करने की कोशिश कर रहा है और पूछता है कि क्या आप जारी रखना चाहते हैं।

यहां छवि विवरण दर्ज करें

अंतिम नोट: क्रोम और फ़ायरफ़ॉक्स दोनों के समाधान कुछ के लिए वर्कअराउंड हैं जो ब्राउज़र जानबूझकर अक्षम हैं, संभवतः सुरक्षा कारणों से। वे दोनों को अपने उपयोगकर्ताओं को हाथ से पहले संगत होने के लिए कॉन्फ़िगर करने की आवश्यकता होती है, इसलिए संभवतः सार्वजनिक उपयोग के लिए लक्षित साइटों के लिए व्यवहार्य नहीं होगा, लेकिन मेरे जैसे स्थानीय रूप से होस्ट किए गए समाधानों के लिए आदर्श हैं।

उम्मीद है कि इस मदद की! :)


5

उन लोगों के लिए जो अभी भी इस पृष्ठ पर जा रहे हैं, आपको केवल एक टैब बंद करने की अनुमति है जो स्क्रिप्ट द्वारा या लक्ष्य _blank के साथ HTML के एंकर टैग का उपयोग करके खोला जाता है। दोनों का उपयोग कर बंद किया जा सकता है

<script>
    window.close();
</script>

यह हर आधुनिक ब्राउज़र में काम करता है। IE11 और Edge 17 एक पुष्ट चेतावनी दिखाते हैं लेकिन यह अभी भी काम करता है।
फाबियन वॉन एलर्ट्स

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

इसने मेरे लिए काम किया


1

थोड़ी देर हो गई, लेकिन यह वही है जो मुझे पता चला ...

window.close()केवल तभी काम करेगा (IE एक अपवाद है) यदि आप जिस विंडो के लिए कोशिश कर रहे हैं, close()वह window.open () पद्धति का उपयोग करके स्क्रिप्ट द्वारा खोली गई थी।

(कृपया लक्ष्य _blank के साथ एंकर टैग के बारे में नीचे @killstreet की टिप्पणी देखें)

TLDR : क्रोम और फ़ायरफ़ॉक्स उन्हें बंद करने की अनुमति देते हैं।

आपको कंसोल त्रुटि मिलेगी: लिपियां उन विंडो को बंद नहीं कर सकती हैं जिन्हें स्क्रिप्ट द्वारा नहीं खोला गया था। एक त्रुटि के रूप में और कुछ नहीं।

यदि आप स्क्रिप्ट (जैसे समय) से पृष्ठ खोला गया था, यह जानने के लिए आप URL में एक अनूठा पैरामीटर जोड़ सकते हैं - लेकिन यह सिर्फ एक हैक है और मूल कार्यक्षमता नहीं है और कुछ मामलों में विफल हो जाएगा ।

मुझे यह जानने का कोई तरीका नहीं मिला कि पृष्ठ खुले (या नहीं) से खोला गया था, और बंद नहीं होगा और त्रुटियां नहीं होंगी। यह "परीक्षण" प्रिंट नहीं करेगा :

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

आप MDN को बंद () फ़ंक्शन के बारे में अधिक पढ़ सकते हैं


2
यह सिर्फ टैब्स नहीं है जो स्क्रिप्ट द्वारा खोले गए हैं, लक्ष्य _blank के साथ एक एंकर टैग को भी बंद करने की अनुमति होगी। अब तक क्रोम और फ़ायरफ़ॉक्स में परीक्षण किया गया है और दोनों एक एंकर टैग द्वारा खोले गए टैब को बंद करने की अनुमति देते हैं।
किलस्ट्रीट


-1

यह उसी को हल करने का एक तरीका है, इस तरह एक जावास्क्रिप्ट फ़ंक्शन घोषित करें

<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>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.