Chrome में window.close और self.close विंडो को बंद न करें


174

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

तो क्या किसी के पास किसी चीज़ का उपयोग करके खिड़की बंद करने का वास्तविक, कार्यात्मक और सिद्ध तरीका है javascript:window.close()या javascript:self.close()वह वास्तव में वही करता है जो अपेक्षित है और ऐसा कुछ होता है जो हर ब्राउज़र में ठीक होता है जो क्रोम आधारित नहीं है? किसी भी सुझाव बहुत सराहना की जाएगी और मैं जावास्क्रिप्ट विशिष्ट समाधान के लिए देख रहा हूँ, JQuery या तीसरे पक्ष के कार्यान्वयन कुछ भी नहीं।

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


window.close()क्रोम में मेरे लिए काम करता है।
मैश

3
@ G noårµåñ: उम्म, नहीं यह नहीं है। इसका भाषा से कोई लेना-देना नहीं है। यह ब्राउज़र द्वारा कार्यान्वित एक फ़ंक्शन है। यदि आप यह दिखाते हुए एक न्यूनतम उदाहरण लिख सकते हैं कि window.closeयह किस तरह से काम नहीं कर रहा है, तो मुझे लगता है कि "यह काम नहीं करता है" कहने की तुलना में अधिक सहायक हो सकता है।
ब्लेंडर

3
मैंने आपको TWO उदाहरण दिए हैं। आपके लिए यह वर्तनी है,<a href="javascript:window.close">CLOSE</a>
GÐïårñåñ

3
संरक्षक जो अनुचित जावास्क्रिप्ट है। Window.close () आज़माएँ और यह काम करता है। window.close सिर्फ एक चर नाम है और फ़ंक्शन को कॉल नहीं करेगा (कम से कम यह तब नहीं होता है जब मैं इसे क्रोम 37 में परीक्षण करता हूं)। जब मैं आपके उदाहरण को window.close () में बदलता हूं तो यह क्रोम 37 में काम करता है।
जॉर्ज

3
GGår isåñ क्या @George ने कहा कि लूट नहीं है (जब तक कि मैं पूरी तरह से गलत शब्द का अर्थ नहीं समझा हूं)। वह यह बताते हुए सही है कि आपके उदाहरणों में जावास्क्रिप्ट में आपके पास एक सिंटैक्टिक त्रुटि है, और यदि आपके आवेदन-कोड में एक ही त्रुटि है, तो यह आपके मुद्दे की संभावना से अधिक है। यदि, हालांकि, ये आपके उदाहरणों में सिर्फ टाइपो हैं, तो आपको बेहतर जवाब पाने के लिए उन टाइपो को सही करना चाहिए।
सुपरऑल

जवाबों:


187

साधारण जावास्क्रिप्ट विंडोज़ विली-निली को बंद नहीं कर सकती है। यह एक सुरक्षा सुविधा है, जो कुछ समय पहले शुरू की गई थी, ताकि विभिन्न दुर्भावनापूर्ण शोषण और झुंझलाहट को रोका जा सके।

के लिए नवीनतम कार्यशील युक्ति सेwindow.close() :

close()खिड़की पर विधि चाहिए वस्तुओं, सभी निम्न शर्तों को पूरा कर रहे हैं, करीब ब्राउज़िंग संदर्भ एक :

  • इसी ब्राउज़िंग संदर्भ एक है पटकथा closable
  • अवलंबी स्क्रिप्ट का ब्राउज़िंग संदर्भ ब्राउज़िंग संदर्भ A से परिचित है ।
  • अवलंबी स्क्रिप्ट के ब्राउज़िंग संदर्भ को ब्राउज़िंग संदर्भ को नेविगेट करने की अनुमति है ।

एक ब्राउज़िंग संदर्भ स्क्रिप्ट-क्लोजेबल है यदि यह एक सहायक ब्राउज़िंग संदर्भ है जो एक स्क्रिप्ट द्वारा बनाया गया था (जैसा कि उपयोगकर्ता की कार्रवाई द्वारा विरोध किया जाता है), या यदि यह एक ब्राउज़िंग संदर्भ है जिसके सत्र इतिहास में केवल एक दस्तावेज़ है।

इसका मतलब है, एक छोटे अपवाद के साथ, जावास्क्रिप्ट को उस विंडो को बंद करने की अनुमति नहीं होनी चाहिए जो उसी जावास्क्रिप्ट द्वारा नहीं खोली गई थी।

Chrome उस अपवाद को अनुमति देता है - जो यह उपयोगकर्ताओं के लिए लागू नहीं होता है - हालाँकि फ़ायरफ़ॉक्स नहीं करता है। फ़ायरफ़ॉक्स कार्यान्वयन फ्लैट आउट स्टेट्स :

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


यदि आप window.closeGreasemonkey / Tampermonkey / usercript से प्राप्त करने का प्रयास करेंगे तो आपको:
फ़ायरफ़ॉक्स: त्रुटि संदेश, " Scripts may not close windows that were not opened by script."
क्रोम: बस चुपचाप विफल हो जाता है।



दीर्घकालिक समाधान:

इससे निपटने का सबसे अच्छा तरीका क्रोम एक्सटेंशन और / या फ़ायरफ़ॉक्स ऐड-ऑन के बजाय बनाना है। ये मज़बूती से वर्तमान विंडो को बंद कर सकते हैं।

हालाँकि, सुरक्षा जोखिम के बाद से window.close, एक ग्रीसेमोनकी / टैम्परमॉन्की स्क्रिप्ट के लिए बहुत कम हैं; Greasemonkey और Tampermonkey अपने एपीआई में अनिवार्य रूप से यह कार्यक्षमता प्रदान कर सकते हैं (अनिवार्य रूप से आपके लिए विस्तार कार्य की पैकेजिंग)।
फ़ीचर अनुरोध करने पर विचार करें।



हैकी वर्कआर्डो:

वर्तमान में क्रोम "आत्म पुनर्निर्देशन" के शोषण के प्रति संवेदनशील था। इसलिए इस तरह का कोड सामान्य रूप से काम करता था:

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

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

हालाँकि, अभी भी एक भिन्नता क्रोम (v43 और v44) प्लस टैम्परमोंकी (v3.11 या बाद के संस्करण) पर काम करती है । एक स्पष्ट @grantऔर सादे का उपयोग करें window.close()। ईजी:

// ==UserScript==
// @name        window.close demo
// @include     http://YOUR_SERVER.COM/YOUR_PATH/*
// @grant       GM_addStyle
// ==/UserScript==

setTimeout (window.close, 5000);

अपडेट के लिए zanetu का धन्यवाद । ध्यान दें कि यह केवल एक टैब खुला होने पर काम नहीं करेगा। यह केवल अतिरिक्त टैब बंद करता है।


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

आप खोल सकते हैं about:configऔर सेट
allow_scripts_to_close_windowsकरने के लिए true

यदि आपकी स्क्रिप्ट व्यक्तिगत उपयोग के लिए है, तो आगे बढ़ें और ऐसा करें। यदि आप किसी और को उस सेटिंग को चालू करने के लिए कहते हैं, तो वे पूर्वाग्रह से मुक्त होने के लिए स्मार्ट और उचित होंगे।

वर्तमान में Chrome के लिए कोई समतुल्य सेटिंग नहीं है।


3
हे मेरे मित्र, अंत में तुमसे सुनकर खुशी हुई। बस एक ध्यान दें, Fx पर आप flipping द्वारा कि सीमा बाईपास कर सकते हैं dom.allow_scripts_to_close_windows;falseकरने के लिए trueस्रोत हैकिंग के बिना, लेकिन मैं क्रोम में कुछ भी नहीं लगता है / पुनर्निर्माण है जो कि कैसे मैं अब के लिए इसके चारों ओर मिला है। मुझे पता है कि टीएम डेवलपर से बात की है और हाल के अल्फा / बीटा में हमने इसे मैन-इन-द-मिडिल स्टाइल, कार्यों में चलाने के लिए एक संगतता विकल्प (स्क्रिप्ट की सेटिंग) के रूप में रखा है। मुझे लगता है कि हम कोई साफ समाधान, दया है हैक की कमी का अनुमान है।
G atårµåñ

3
यदि किसी को भी विंडो के साथ कोई समस्या हो रही है। ब्राउज़रों के बीच विशेष व्यवहार का अंतर है, तो इस उत्तर को बहुत ध्यान से पढ़ें - यह वास्तव में सभी सही जानकारी रखता है।
ब्रॉन डेविस 16

क्या यह जांचने का कोई तरीका है कि खिड़की स्क्रिप्ट द्वारा खोली गई थी या नहीं? (मुझे एक बैक बटन दिखाने / छिपाने की आवश्यकता है, मैं हैक का उपयोग नहीं करना चाहता) धन्यवाद EDIT: window.opener === null
Cétia

चूंकि Chrome 36.0.1985.125 WEDNESDAY, JULY 16, 2014, द हैसी वर्कअराउंड काम नहीं कर सकता है, मेरे जवाब में विस्तार से।
swcool

2
window.close()यदि आप @grantइसके अलावा किसी अन्य मूल्य पर सेट करते हैं, तो टैम्पोनरी में काम करेगा noneइस धागे को देखें ।
20

32

Chrome ने 36.0.1985.125 संस्करण पर सुरक्षा समस्याओं को ठीक किया

Chrome 36.0.1985.125 WEDNESDAY, JULY 16, 2014 रिलीज़ नोट

मेरे अवलोकन से, इस अपडेट window.close()ने पॉपअप विंडो को बंद करने के लिए उपयोग करने पर समस्या को ठीक किया । जब आप विफल होते हैं, तो आप इसे कंसोल में देखेंगे, "लिपियाँ केवल उसी विंडो को बंद कर सकती हैं जो इसके द्वारा खोली गई थीं।" इसका मतलब है कि हैकी वर्कअराउंड (ब्रॉक एडम्स का जवाब) नवीनतम रिलीज में काम नहीं कर सकता है

इसलिए, पिछले Chrome रिलीज़ बिल्ड में, नीचे दिया गया कोड ब्लॉक काम कर सकता है लेकिन इस अपडेट के साथ नहीं।

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

इस अपडेट के लिए, आपको पॉपअप विंडो को बंद करने के लिए तदनुसार अपना कोड अपडेट करना होगा। समाधान में से एक पॉपअप विंडो आईडी को पकड़ना और उपयोग करना है

chrome.windows.remove(integer windowId, function callback)

इसे हटाने की विधि। क्रोम एक्सटेंशन विंडोज एपीआई chrome.windows पर पाया जा सकता है ।

वास्तव में मेरा क्रोम एक्सटेंशन मार्क व्यू इस मुद्दे का सामना कर रहा था और मुझे इस क्रोम अपडेट के लिए काम करने के लिए अपना कोड अपडेट करना पड़ा। वैसे, MarkView बहुत बढ़िया Markdown फ़ाइलें पढ़ने और लिखने के लिए उपकरण है, यह लाइन नंबर के साथ कंटेंट आउटलाइन, सॉर्टेबल टेबल और कोड ब्लॉक सिंटैक्स हाइलाइट सहित सुविधाएँ प्रदान करता है।

मैंने भी इस पोस्ट को बनाया , किसी भी टिप्पणी का स्वागत है।


2
सही हैक है open(location, '_self').close();- से वापसी मूल्य के उपयोग पर ध्यान दें open()। यह अभी भी Chrome36.0.1985.125 m
Brock Adams

मेरे मामले में, मैं बस फिर से परीक्षण करता open(location, '_self').close();हूं, मुझे इस पर "अनधिकृत" त्रुटि मिली। यह त्रुटि 'window.close () (warning on this"Scripts may close only the windows that were opened by it."). It looked like ओपन (स्थान,' _ स्वयं ') के साथ अलग है। बंद (); `थोड़ा आगे बढ़ा, लेकिन यह मेरे मामले में पूरा नहीं हो सकता। टिप्पणी के लिए धन्यवाद @ ब्रॉक-एडम्स।
स्वस्तिक

मेरे पास टाइपस्क्रिप्ट है और जब मैं chrome.windows.removeकहता हूं कि यह प्रतीक क्रोम नहीं मिल सकता है। मैं इसे कैसे हल करूं? क्या मुझे किसी प्रकार के संदर्भ को जोड़ने की आवश्यकता है?
१२:०२ पर DevT

@devt chrome.windows.remove Chrome एक्सटेंशन API है, आपके जावास्क्रिप्ट को आपके क्रोम एक्सटेंशन प्रोग्राम द्वारा पहचाना जाना चाहिए। आप इसे अपने क्रोम एक्सटेंशन मेनिफ़ेस्ट के लिए background.js के अंदर आज़मा सकते हैं। इसके लिए आपके पास: "बैकग्राउंड": {"स्क्रिप्ट": ["बैकग्राउंड.जेएस"], ...},
swcool

मैंने उपयोगकर्ताओं को स्वतंत्र रूप से एक्सेस करने के लिए MarkView लॉगिन फ़ंक्शन को हटा दिया था । इसलिए ऊपर उल्लेखित उदाहरण अब उपलब्ध नहीं है।
swcool

21

टैम्पेरमिनी में अब आप उपयोग कर सकते हैं

// @grant        window.close

और फिर बस कॉल करें

window.close();

मैंने पुष्टि की है कि यह कई उदाहरणों में काम करता है लेकिन अभी भी कभी-कभार जिद्दी है लेकिन कुछ भी नहीं की तुलना में बेहतर है, धन्यवाद। मैं इसे पोस्ट में जोड़ दूंगा।
18

2
सिर्फ एक नोट के रूप में:
ग्रीसेमोनकी

17

मैं ब्रॉक एडम्स द्वारा पोस्ट की गई विधि का उपयोग कर रहा हूं और यह फ़ायरफ़ॉक्स में भी काम करता है, अगर यह उपयोगकर्ता द्वारा शुरू किया गया हो।

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

मैं इसे एक बटन प्रेस से बुला रहा हूं इसलिए यह उपयोगकर्ता द्वारा शुरू किया गया है , और यह अभी भी क्रोम 35-40, इंटरनेट एक्सप्लोरर 11, सफारी 7-8 और एएलएसओ फ़ायरफ़ॉक्स 29-35 का उपयोग करके ठीक काम कर रहा है। मैंने विंडोज 8.1 और मैक ओएस एक्स 10.6, 10.9 और 10.10 के संस्करण का उपयोग करके परीक्षण किया है यदि वह अलग है।


सेल्फ-क्लोजिंग विंडो कोड (स्वयं को बंद करने वाले पृष्ठ पर)

उपयोगकर्ता द्वारा खोली गई विंडो पर उपयोग किया जाने वाला पूरा कोड जो स्वयं बंद हो सकता है:

window_to_close.htm

जावास्क्रिप्ट:

function quitBox(cmd)
{   
    if (cmd=='quit')
    {
        open(location, '_self').close();
    }   
    return false;   
}

HTML:

<input type="button" name="Quit" id="Quit" value="Quit" onclick="return quitBox('quit');" />

इस परीक्षण पृष्ठ को आज़माएँ: (अब क्रोम 40 और फ़ायरफ़ॉक्स 35 में परीक्षण किया गया)

http://browserstrangeness.bitbucket.io/window_close_tester.htm


विंडो ओपनर कोड (उपरोक्त पृष्ठ को खोलने वाले पृष्ठ पर)

इस कार्य को करने के लिए, सुरक्षा-लगाए गए क्रॉस ब्राउज़र संगतता के लिए आवश्यक है कि जिस विंडो को बंद किया जाना है, उसे पहले ही उपयोगकर्ता द्वारा उसी साइट डोमेन के भीतर एक बटन पर क्लिक करके खोला गया हो।

उदाहरण के लिए, खिड़की जो ऊपर बंद करने के लिए विधि का उपयोग करती है, उसे इस कोड का उपयोग करके पृष्ठ से खोला जा सकता है (कोड मेरे उदाहरण पृष्ठ से लिंक किया गया है):

window_close_tester.htm

जावास्क्रिप्ट:

function open_a_window() 
{
    window.open("window_to_close.htm"); 

    return false;
}

HTML:

<input type="button" onclick="return open_a_window();" value="Open New Window/Tab" />

अपवाद शुरू किए गए उपयोगकर्ता के बारे में भूल गए; अच्छी पकड़। मुझे लगता है कि अधिकांश उपयोगकर्ता नाम पूरी तरह से स्वचालित संचालन चाहते हैं। उनके पास पहले से ही एक काम है, उपयोगकर्ता ने करीब तंत्र शुरू किया - ऊपरी दाएं में छोटा सा एक्स। (^__ऑनलाइज
ब्रॉक एडम्स

1
किसी तरह, यह मेरे लिए काम नहीं करता है। न तो फ़ायरफ़ॉक्स 30 पर और न ही क्रोम 37 पर। यह सब करता है पृष्ठ को रिक्त (वास्तव में अजीब व्यवहार) बन जाता है। मेरे कोड है <button onclick="open(location,'_self').close()" >Close Window</button>। क्या मैं कुछ गलत कर रहा हूँ? यह मुझे लगता है कि यह भी उपयोगकर्ता द्वारा शुरू किया गया है। ध्यान दें कि यदि मैं a <button>या a का उपयोग करता हूं तो मुझे वही परिणाम मिलता है <input type="button">
लॉर्डऑफइनपिग्स

आपके लिए उत्तर में ऊपर एक परीक्षण पृष्ठ जोड़ा गया।
जेफ क्लेटन

@YumYumYum पोस्ट के लिए धन्यवाद, bitbucket.org ने हाल ही में bitbucket.io का लिंक बदल दिया - अब जवाब में तय किया गया है
जेफ क्लेटन

यह मेरे लिए काम करता है (पृष्ठ को बंद करने के लिए पृष्ठ पर एक बटन होने)। क्या काम नहीं किया गया था: window.open('', '_self', ''); window.close(); लेकिन इसके साथ काम किया open(location, '_self').close();
krystonen

10

कई लोग अभी भी जावास्क्रिप्ट का उपयोग करके क्रोम ब्राउज़र को बंद करने का एक तरीका खोजने की कोशिश कर रहे हैं। निम्न विधि केवल तब काम करती है जब आप Chrome को APP लांचर के रूप में उपयोग करते हैं - उदाहरण के लिए कियोस्क!

मैंने निम्नलिखित परीक्षण किया है:

मैं निम्नलिखित एक्सटेंशन का उपयोग कर रहा हूं: कियोस्क को बंद करें

मैं उपयोग निर्देशों का पालन कर रहा हूं और यह ठीक काम करने लगता है (सुनिश्चित करें कि परीक्षण करते समय आप कैश को साफ कर दें)। मेरे द्वारा उपयोग की गई जावास्क्रिप्ट (ईवेंट पर क्लिक करने के लिए जुड़ी हुई है):

window.location.href = '/closekiosk';

मुझे आशा है कि किसी को मदद मिलती है, क्योंकि यह एकमात्र काम करने वाला समाधान है जो मैंने पाया है।

नोट: ऐसा लगता है कि विस्तार पृष्ठभूमि में चलता है और क्रोम ट्रे आइकन जोड़ता है। इसमें निम्न विकल्प की जाँच की गई है: "क्रोम को पृष्ठभूमि में चलने दें" (या समान पाठ)। आपको इसके साथ खेलने की आवश्यकता हो सकती है, जब तक कि यह आपके लिए काम न करे। मैंने इसे अनियंत्रित किया और अब यह ठीक काम करता है!


9

यह सोचने के बावजूद कि यह "गलत तरीके से झूठ" है, जो आप कहते हैं कि "एक विश्वास प्रतीत होता है" वास्तव में सही है। Window.close के लिए मोज़िला प्रलेखन कहता है

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

आप कहते हैं कि यह "अभी भी करने वाला है", लेकिन मुझे नहीं लगता कि आपको कोई संदर्भ मिलेगा जो समर्थन करता है, हो सकता है कि आपने कुछ गलत किया हो?


9

मुझे एक नया तरीका मिला जो मेरे लिए पूर्णता से काम करता है

var win = window.open("about:blank", "_self");
win.close();

1
यह 2017 है और मुझे अभी भी "लिपियों को बंद नहीं किया जा सकता है जो स्क्रिप्ट द्वारा नहीं खोला गया था" की त्रुटि मिलती है।
रोमीमी

IE 11 के पुष्टिकरण बटन के लिए अच्छा हैक
Gopal00005

क्रोम और फ़ायरफ़ॉक्स पर काम करता है
विनेथ प्रधान

1
यह छेद भरा हुआ लग रहा है। मैं नहीं जानता कि कब, लेकिन मैं नवीनतम देव का उपयोग कर रहा हूँ 84.x का निर्माण। खाली पृष्ठ लोड होता है लेकिन पास में आग नहीं लगती है।
स्कॉट क्रिस्टेंसेन

4

नीचे दिए गए कोड ने मेरे लिए काम किया -

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

Chrome 43.0.2357.81 पर परीक्षण किया गया


क्या आप कृपया अपना Chrome संस्करण जोड़ सकते हैं?
Stephan

मेरा क्रोम संस्करण 43.0.2357.81 है।
DfrDkn

7
मेरे लिए कि बस वर्तमान विंडो को बदल देता है, जिसमें / स्थान पर एक विंडो है।
अलियनोस-

@ alianos- मेरे लिए भी।
रिकार्डोगोन्जेल्स 20

1
नवीनतम क्रोम में काम नहीं कर रहा है - संस्करण 61.0.3163.100 (आधिकारिक बिल्ड) (64-बिट)
सुभाजित

1

यह पुराना हो सकता है, लेकिन इसका उत्तर दें।

मैं टैब बंद करने के लिए top.close () का उपयोग करता हूंwindow.close () या अन्य खुले ... करीब मेरे लिए काम नहीं किया।


11
यह "Scripts may not close windows that were not opened by script."अन्य उत्तरों में वर्णित समस्या से भी ग्रस्त है।
kad81

1
कृपया अपने उत्तर पर समाधान दें। कृपया केवल अपने उत्तर पर समस्या पर चर्चा न करें।
बिमल दास

0

मेरे मामले में, पृष्ठ को बंद करने की आवश्यकता है, लेकिन एक लिंक द्वारा खोला जा सकता है और इस प्रकार window.closeविफल हो जाएगा।

मैंने जो हल चुना window.close, वह है , उसके बाद window.setTimeoutएक अलग पृष्ठ पर पुनर्निर्देशित करना।

इस तरह, यदि window.closeसफल होता है , तो उस पृष्ठ पर निष्पादन बंद हो जाता है, लेकिन यदि यह विफल हो जाता है, तो एक सेकंड में, यह एक अलग पृष्ठ पर रीडायरेक्ट करेगा।

window.close();
window.setTimeout(function(){location.href = '/some-page.php';},1000);

0

ब्रॉक का यह जवाब मेरे लिए काम कर गया। जावास्क्रिप्ट को उस विंडो को बंद करने की अनुमति नहीं होनी चाहिए जो उसी जावास्क्रिप्ट द्वारा नहीं खोली गई थी।

मैं केवल बच्चे की खिड़की को बंद कर सकता हूं अगर मैं इसे मूल जावास्क्रिप्ट से बंद कर रहा हूं। इसलिए अपने माता-पिता में मैं ऐसा कुछ कर सकता हूं।

var myChildWindow;

function openWindow(){
myChildWindow = window.open("","myChildWindow","width=400,height=400");
}

function closeWindow() {
myChildWindow.close();
}

-1

आप नीचे मेरे कोड का उपयोग करने का भी प्रयास कर सकते हैं। इससे आपको अपनी मूल विंडो को पुनर्निर्देशित करने में भी मदद मिलेगी:

जनक:

<script language="javascript">

function open_a_window() 
{
    var w = 200;
        var h = 200;
        var left = Number((screen.width/2)-(w/2));
        var tops = Number((screen.height/2)-(h/2));

        window.open("window_to_close.html", '', 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width='+w+', height='+h+', top='+tops+', left='+left);

   return false;
}

// opener:
window.onmessage = function (e) {
  if (e.data === 'location') {
    window.location.replace('https://www.google.com');
  }
};

</script>

<input type="button" onclick="return open_a_window();" value="Open New Window/Tab" />

पॉप अप:

<!DOCTYPE html>
<html>
<body onload="quitBox('quit');">

<h1>The window closer:</h1>

<input type="button" onclick="return quitBox('quit');" value="Close This Window/Tab" /> 


<script language="javascript">

function quitBox(cmd) 
{      
    if (cmd=='quit')    
    {   
       window.opener.postMessage('location', '*');
       window.open(location, '_self').close();    
    }     
    return false;   
}

</script>

</body>
</html>

-1

TamperMonkey के लिए:

@grant window.close 

Ref: https://www.tampermonkey.net/documentation.php#_grant


जब भी यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, तो उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर होगा
एंटोन मेन्शोव

-2

केवल तभी यदि आप window.open () का उपयोग करके एक नई विंडो खोलते हैं, जैसा कि मैंने ऊपर बताया है कि नई विंडो कोड का उपयोग कर बंद करने में सक्षम होगी। यह मेरे लिए पूरी तरह से काम करता है :) नोट: नए टैब में पेज खोलने के लिए कभी भी href का उपयोग न करें। Window.close () "href" के साथ काम नहीं करता है। इसके बजाय window.open () का उपयोग करें।


1
यह सिर्फ कर्जन विंडो की जगह ले रहा है। अब और नहीं।
RicardoGonzales 20

-3

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

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

इसलिए यह पहले से ही सही पते पर, Chrome को कियोस्क मोड में लॉन्च करता है। यह कल्पना में दूसरे विकल्प को आसानी से संतुष्ट करने के लिए होता है:

एक ब्राउज़िंग संदर्भ स्क्रिप्ट-क्लोजेबल है यदि यह एक सहायक ब्राउज़िंग संदर्भ है जो एक स्क्रिप्ट द्वारा बनाया गया था (जैसा कि उपयोगकर्ता की कार्रवाई का विरोध किया जाता है), या यदि यह एक शीर्ष-स्तरीय ब्राउज़िंग संदर्भ है जिसके सत्र इतिहास में केवल एक दस्तावेज़ है।

तो बस window.close()मेरे कियोस्क ऐप से कॉल करना बस काम करता है !


-5

कुछ इस तरह की कोशिश करो onclick = "स्व वापस लौटें। ()"

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