2011-10-28 13 views
22

नए टैब पर स्विच किए बिना जावास्क्रिप्ट का उपयोग करके मैं एक नया टैब कैसे खोल सकता हूं?
उदाहरण के लिए, जब कोई उपयोगकर्ता किसी लिंक पर क्लिक करता है तो एक नया टैब खोला जाना है, लेकिन उपयोगकर्ता को वर्तमान टैब पर रहना चाहिए।नए टैब पर स्विच किए बिना जावास्क्रिप्ट में नया टैब कैसे खोलें?

उत्तर

36

वेब ब्राउज़र अपने नए टैब पर केंद्रित है, लेकिन आप ध्यान केंद्रित वापस फोन कर सकते हैं:

function openWindow(url) 
{ 
    window.open(url, '_blank'); 
    window.focus(); 
} 

<a href="http://www.example.com/" onclick="javascript:openWindow(this.href);return false;">Click Me</a> 
+1

पुनः 'फोकस': मेरे अनुभव में नहीं। क्रोम के साथ नहीं, वैसे भी (http://jsbin.com/aboluk/2) - लेकिन वे कोशिश करने में ज्यादा नुकसान नहीं कर रहे हैं। –

+0

@ टी.जे.क्रॉडर: यह वास्तव में क्रोम 15 में मेरे लिए काम करता है। – josh3736

+3

@ josh3736: यह दिलचस्प है। मैं अभी भी 14 (लिनक्स पर) हूं और यह नहीं करता है। तो मूल रूप से: आप इस पर भरोसा नहीं कर सकते हैं। :) –

10

दुर्भाग्य से, आप वर्तमान में ऐसा नहीं कर सकते - लेकिन आप करीब आ सकते हैं। आप एक नया विंडो खोल सकते हैं, और यदि आप किसी भी विंडो आयाम या विंडो सुविधाओं को निर्दिष्ट किए बिना ऐसा करते हैं, तो अधिकांश आधुनिक ब्राउज़र इसके बजाय एक नया टैब खोलेंगे (उपयोगकर्ता की प्राथमिकताओं के आधार पर, लेकिन फिर, आप उपयोगकर्ता को पसंद करना चाहते हैं वैसे भी, सही?)। तो अगर आप किसी चीज़ के लिए नाम का उपयोग करने जा रहे हैं तो window.open(url) या window.open(url, name)। उपयोगकर्ता द्वारा शुरू की गई घटना के प्रत्यक्ष प्रतिक्रिया में ऐसा करना सुनिश्चित करें, अन्यथा ब्राउज़र का पॉप-अप अवरोधक संभवतः ... पॉप-अप को अवरोधित करेगा। :-)

Live example

अपने खिड़की पर रखते हुए ध्यान केंद्रित ... उस के साथ अच्छे भाग्य के बारे में। window.open(...) के बाद आप window.focus() पर कॉल कर सकते हैं, लेकिन मेरे अनुभव में यह आमतौर पर काम नहीं करता है।

यह वहाँ बाहर फेंकने: आप बात उपयोगकर्ता एक यूआरएल के साथ एक वास्तविक लिंक के साथ सूचना का आदान प्रदान करते हैं, उपयोगकर्ता तय कर सकते हैं कि क्या यह एक नए टैब में खोलने के लिए, एक नई विंडो, जो कुछ भी है और क्या यह देने के लिए फोकस (यदि वे Shift + Click और Ctrl + Shift + Click, या राइट-क्लिक मेनू को जानने के लिए पर्याप्त परिष्कृत हैं)।

+0

ध्यान दें कि IE में, यह एक नई विंडो, नहीं एक नए टैब में खोलें करता है। – josh3736

+0

@ josh3736: यह इस बात पर निर्भर करता है कि आप किस आईई का उपयोग कर रहे हैं, और नए संस्करणों में, आपकी सेटिंग्स क्या हैं। –

+0

भूल गए कि मैंने IE9 में उस सेटिंग को बदल दिया था। विशेष रूप से, 'window.open()' IE में एक नया टैब का कारण बनता है जब तक विकल्प> टैब सेटिंग्स> "आईई को तय करें कि पॉप-अप कैसे खुलना चाहिए" बदल दिया गया है। – josh3736

2

यह उपयोगकर्ता विशिष्ट सेटिंग्स है, आप जेएस से इस व्यवहार को नहीं बदल सकते हैं।

3

दुर्भाग्य से, आप सभी ब्राउज़रों में ऐसा नहीं कर सकते, लेकिन आप क्रोम में यह कर सकते हैं अगर आप ब्राउज़र के विस्तार को लागू करें। कैसे जावास्क्रिप्ट द्वारा क्रोम में टैब के साथ हेरफेर करने के लिए:

http://code.google.com/chrome/extensions/tabs.html

chrome.tabs.create(object createProperties, function callback) 
    Creates a new tab. Note: This function can be used without requesting the 'tabs' permission in the manifest. 
Parameters 
    **createProperties** (object) 
    **windowId** (optional integer) 
     The window to create the new tab in. Defaults to the current window. 
    **index** (optional integer) 
     The position the tab should take in the window. The provided value will be clamped to between zero and the number of tabs in the window. 
    **url** (optional string) 
     The URL to navigate the tab to initially. Fully-qualified URLs must include a scheme (i.e. 'http://www.google.com', not 'www.google.com'). Relative URLs will be relative to the current page within the extension. Defaults to the New Tab Page. 
    **selected** (optional boolean) 
     Whether the tab should become the selected tab in the window. Defaults to true 
    pinned (optional boolean) 
     Whether the tab should be pinned. Defaults to false 
    **callback** (optional function) 
1
(function(a){ 
document.body.appendChild(a); 
a.setAttribute('href', location.href); 
a.dispatchEvent((function(e){ 
    e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, true, false, false, false, 0, null); 
    return e 
}(document.createEvent('MouseEvents'))))}(document.createElement('a'))) 
1

पोस्ट पुराने लेकिन किसी भी 100% सही जवाब के बिना है। सभी ब्राउज़र पर

समाधान:

आप के माध्यम से यूआरएल एक ही डोमेन के लिए नया टैब खोलने के कर सकते हैं:

window.open("newurl.php", "_blank"); 

और क्रॉस-डोमेन नए टैब के लिए, आप एक सरल स्थानीय स्क्रिप्ट बनाने चाहिए की तरह इस:

नई फ़ाइल में

"redirect.php" यदि आप एक पैरामीटर (नया टैब यूआरएल को लक्षित) इस

तरह से पारित

window.open("redirect.php?u=http://www.google.com", "_blank"); 

:)

अपनी मेरी वेबसाइट में मेरे समाधान:

और आप कोई नया टैब किसी भी लक्ष्य यूआरएल के साथ साथ बना सकते हैं।और किसी भी

1

मेरे लिए के साथ काम करते हैं, का उपयोग कर

window.open("https://stackoverflow.com"); 

पूरी तरह से काम किया। यह क्या करता है इस बात पर निर्भर करता है कि आप किस ब्राउज़र का उपयोग कर रहे हैं, कौन सी ऑपरेटिंग सिस्टम और आपकी व्यक्तिगत प्राथमिकताएं हैं।

क्रोम, इंटरनेट एक्सप्लोरर, और फ़ायरफ़ॉक्स सभी ने एक नया टैब खोला। क्षमा करें अगर यह आपके लिए काम नहीं करता है।

(बस महसूस किया कि इस एक पुराने धागा है)

संबंधित मुद्दे