टैब पर प्रोग्रामेटिक रूप से नए पेज खोलें


98

मैं एक नए टैब का उपयोग करके एक नया पृष्ठ खोलने के लिए सफारी या IE7 को "मजबूर" करने की कोशिश कर रहा हूं ।

प्रोग्रामेटिक रूप से मेरा मतलब कुछ इस तरह है:

window.open('page.html','newtaborsomething');

1
मुझे यकीन नहीं है कि मुझे यह बात मिल रही है - क्या आप एक ऐप विकसित कर रहे हैं, जो IE के साथ काम करता है और आप नए टैब पर प्रत्येक नया पेज खोलना चाहते हैं? या आप बस एक लिंक पर क्लिक करने पर नए टैब खोलने के लिए IE सेट करना चाहते हैं? या आप अधिक लिंक वाली कोई साइट बना रहे हैं और आप उन्हें अलग से खोलना चाहते हैं? Pls इसे स्पष्ट करें।
डेंजो

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

जवाबों:


63

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

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


जब "इंटरनेट एक्सप्लोरर तय करता है कि पॉपअप कैसे खुले" विकल्प का चयन किया जाता है, तो इंटरनेट एक्सप्लोरर इस निर्णय को करने के लिए किन मानदंडों का उपयोग करता है?
Dead.Rabit

113

आप फ़ायरफ़ॉक्स में यह काम कर सकते हैं, एंकर को एक नया टैब खोलने के लिए मजबूर करने के लिए विशेषता लक्ष्य = "_ newtab" जोड़ें।

<a href="some url" target="_newtab">content of the anchor</a>

जावास्क्रिप्ट में आप उपयोग कर सकते हैं

window.open('page.html','_newtab');

कहा कि, मैं सैम के साथ आंशिक रूप से सहमत हूं। आपको उपयोगकर्ता को लिंक पर क्लिक करने से पहले क्या होने जा रहा है, इस पर संकेत दिए बिना नए पृष्ठ या नया टैब खोलने के लिए बाध्य नहीं करना चाहिए ।

मुझे बताएं कि क्या यह अन्य ब्राउज़र पर भी काम करता है (मेरे पास फिलहाल फ़ायरफ़ॉक्स की तुलना में अन्य ब्राउज़र पर इसे आज़माने का मौका नहीं है)।

संपादित करें: ie7 के लिए जोड़ा गया संदर्भ शायद यह लिंक उपयोगी हो सकता है
http://social.msdn.microsoft.com/forums/en-US/ieextensiondevelopment/thread/951b04e4-db0d-4789-ac51-82599dc60405/


6
इस फ़ायरफ़ॉक्स टिप के लिए धन्यवाद, अब मैंने "_newtab" और "newtab" को हटाने के लिए अपने TargetKiller एडऑन को अपडेट किया है। : पी
तत्कालीन नौ

1
मैं वास्तव में आपके उत्तर की सराहना करता हूं, लेकिन मुझे पता है कि फ़ायरफ़ॉक्स यह करेगा (कुछ पाठ, मेरे द्वारा परीक्षण नहीं किए गए, टिप्पणी करते हैं कि यह हमेशा सच नहीं है, एक नई विंडो या टैब प्राप्त करने का 50-50 मौका है)। मुझे भी लगता है कि यह एक मुद्दा नहीं होना चाहिए, लेकिन, आप ग्राहकों को जानते हैं :)
रिकार्डो वेगा

2
हो सकता है कि सभी बिल्ड / प्लेटफ़ॉर्म पर ऐसा न हो, लेकिन लिनक्स पर फ़ायरफ़ॉक्स 3.5 आपको एक से अधिक बार ऐसा करने की अनुमति नहीं देता है ... यदि आपके पेज पर एकाधिक लक्ष्य = "_ newtab" लिंक हैं, तो उनमें से किसी पर भी क्लिक करें केवल एक ही नया टैब पॉप्युलेट करेगा ... अर्थात्, बाद के क्लिक्स उस टैब में पहले से खोली गई किसी भी चीज़ को अधिलेखित कर देंगे। मुझे लगता है कि यह वास्तव में ब्राउज़र-विशिष्ट वर्कअराउंड होने के बजाय "_newtab" नाम का एक टैब खोल रहा है।
रिले कोराडिनी

55
मुझे पूरा यकीन है कि "_newtab" व्यर्थ है, जब तक कि किसी के पास इसके विपरीत दस्तावेज़ न हों। आप जो भी कर रहे हैं, वह एक विंडो खोल रहा है जिसका नाम _newtab है (यही कारण है कि उस विंडो में खुले लक्ष्य के साथ सभी लिंक)। आप "फू" या "बार" को लक्षित कर सकते हैं और समान व्यवहार देख सकते हैं। केवल प्रसिद्ध लक्ष्य _blank, _self, _parent, और _top हैं। htmlcodetutorial.com/linking/_A_TARGET.html
टॉम लिंजा

43

आप में से जो निम्नलिखित का उपयोग करने का प्रयास कर रहे हैं:

window.open('page.html', '_newtab');

वास्तव में window.open मेथड को देखना चाहिए।

आप जो कुछ भी कर रहे हैं वह ब्राउज़र को एक नई विंडो खोलने के लिए कह रहा है NAMED "_newtab" और उसमें पेज.html लोड करें। आपके द्वारा लोड किया गया हर नया पेज उस विंडो में लोड होगा। हालाँकि, यदि किसी उपयोगकर्ता के पास नए विंडो के बजाय नए टैब में नए पृष्ठ खोलने के लिए एक ब्राउज़र है, तो यह एक टैब खोलेगा। बावजूद, यह खिड़की या टैब के लिए एक ही नाम का उपयोग कर रहा है।

यदि आप चाहते हैं कि अलग-अलग पृष्ठ अलग-अलग विंडो या टैब में खुलें तो आपको नई विंडो / टैब का नाम कुछ इस तरह बदलना होगा:

window.open('page2.html', '_newtab2');

बेशक नई विंडो / टैब के लिए नाम _newabab2 के बजाय पेज 1, पेज 2, पेज 3 आदि किसी भी नाम हो सकता है।


3
उसका सामान जानता है। '_newtab' एक आरक्षित नाम नहीं है। a _ब्लांक ’एक विशेष चीज है जो एक अन्य अनिर्दिष्ट और अनाम विंडो / टैब को खोलती है - यह वह है जिसे आप बार-बार उपयोग कर सकते हैं। '_newtab' विशेष नहीं है सिवाय इसके कि यह वह विशिष्ट नाम है जिसे आपने एक नया टैब (डिफ़ॉल्ट) या विंडो दिया था, जिसे आपका ब्राउज़र आपके द्वारा भेजे गए यूआरएल के साथ ताज़ा रखता है।
ब्रैडकिसने79

14

यह उपयोगकर्ता पर निर्भर है कि वे नए टैब या नई विंडो का उपयोग करना चाहते हैं, यह इस व्यवहार को संशोधित करने के लिए डेवलपर का व्यवसाय नहीं है। मुझे नहीं लगता कि आप इसे कर सकते हैं।

पालतू जानवरों की खान - मुझे इससे नफरत है जब साइटें मुझे एक नई विंडो / टैब में खोलने के लिए मजबूर करती हैं - मैं खुद के लिए यह निर्णय लेने में काफी सक्षम हूं। विशेष रूप से जब वे इसे जावास्क्रिप्ट में करते हैं - जो वास्तव में अनपेक्षित है।


1
+1 से सैम - टैब या खिड़कियों में खुलने वाले नए पृष्ठ एक ब्राउज़र (और उपयोगकर्ता) विशिष्ट विकल्प है। सामान्य तौर पर मैं इसे नफरत करता हूं जब कोई भी साइट एक नई विंडो खोलती है।
रिचर्ड ईव

इसके अतिरिक्त: उपयोगकर्ता को परेशान न करने के कारण "सख्त" परिभाषा में, कोई वैध विशेषता "लक्ष्य" नहीं है। इसे आज़माएं: validator.w3.org
guerda

4
मुझे घर पर टैब खोलने के लिए पसंद है, इसलिए मैं उस मामले में उपयोगकर्ता हूं। बस एक अनुस्मारक है कि अपवाद हैं।
मार्क एसेल

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

1
मैं असहमत हूं, उपयोगकर्ता के लिए डिफ़ॉल्ट मान लेना प्रति ब्राउज़र प्रति वेब एप्लिकेशन के लिए एक डिज़ाइन विकल्प है। ब्राउज़र एक डिफ़ॉल्ट की सदस्यता ले सकता है जहां एप्लिकेशन नहीं है। इसके अलावा, यदि ब्राउज़र एप्लिकेशन डिफॉल्ट / ब्राउज़र डिफॉल्ट को ओवरराइड करने के तरीके के साथ उपयोगकर्ता की आपूर्ति करता है, तो यह दोनों दुनिया के लिए सबसे अच्छा है। उपयोगकर्ता> अनुप्रयोग> ब्राउज़र।
डेरेक लित्ज़

8

क्या आपने पहले जैसा प्रयास किया है

var open_link = window.open('','_blank');
open_link.location="somepage.html";

क्या यह क्रॉस ब्राउज़र संगत है? IE8 में काम करने लगता है, भविष्य के संस्करणों या अन्य ब्राउज़रों के बारे में चिंतित है।
n00b

हां .. यह क्रॉस ब्राउज़र के लिए संगत है। मुझे अब तक इससे कोई समस्या नहीं थी: D
Thurein Soe

5

मुझे क्रोम में पता चला,

window.open('page.html','_newtab')

केवल एक बार काम करेंगे।

आप उपयोग कर सकते हैं:

window.open(ct.getNewHref(),'_newtab' + Math.floor(Math.random()*999999));

कई नए टैब खोलने के लिए।


10
क्योंकि Chrome में, _newtab सिर्फ एक नाम है और आप इसे "_newtab" नाम के टैब में पेज खोलने का अनुरोध कर रहे हैं
w00t

3

कोड मैं jQuery के साथ उपयोग करें:

$("a.btn_external").click(function() {
    url_to_open = $(this).attr("href");
    window.open(url_to_open, '_blank');
    return false;
});

एक बच्चे में माता-पिता की क्लिक घटनाओं के बीच अंतर करने के लिए यह उपयोगी है। इस पद्धति का उपयोग करके, आप माता-पिता के क्लिक इवेंट को ट्रिगर नहीं करते हैं।


8
बस सादे पुराने html का उपयोग क्यों नहीं किया? <a href="page.html" target="_blank">foo</a>
पिक्सेल

1
@pixelastic "इस पद्धति का उपयोग करके, आप माता-पिता के क्लिक इवेंट को ट्रिगर नहीं करते हैं।"
माइकल ब्लैकबर्न


0

यदि आप चाहते थे कि आप इस विधि का उपयोग कर सकें, जो कि थोड़ा हैक्य है, लेकिन वांछित कार्यक्षमता प्रदान करेगा:

jQuery('<a/>', {
    id: 'foo',
    href: 'http://google.com',
    title: 'Become a Googler',
    rel: 'external',
    text: 'Go to Google!',
    target:'_blank',
    style:'display:none;'
}).appendTo('#mySelector');

$('#foo').click()

क्या आप एक jsfiddle प्रदान कर सकते हैं?
ज़ेनोलॉजी

-2

यदि आप एक बैच फ़ाइल कह सकते हैं तो यह काम कर सकता है (मैं XP sp2 और IE8 के साथ php का उपयोग करता हूं ... आप IE7, डीनो की कोशिश कर सकते हैं)। विंडोज़ खोलने के लिए अपनी .bat फ़ाइल में निम्न (या समान) का उपयोग करें: "C: \ Progra ~ 1 \ Intern ~ 1 \ iexplore" http://www.site.com "प्रारंभ करें।" उद्धरण चिह्न और C: \ Progr ... आदि के बीच कोई स्थान नहीं है। कुछ बिंदु पर, यह नए टैब के बजाय नई विंडो (यानी, लक्ष्य = "_ रिक्त") खोलना शुरू कर सकता है, लेकिन एक बिंदु तक काम करता है; बड़े पैमाने पर परीक्षण नहीं किया गया। एक नियमित बैच फ़ाइल (CMD.exe) में इसका उपयोग करने के लिए, आपको संभवतः एक खिड़की पहले से ही खोलनी होगी। बस कुछ साझा करने से मैं लड़खड़ा गया। स्पष्टीकरण के लिए उपयुक्त।


-7
<a href="http://www.google.com/" target="_self">New Tab Example</a>

IE7 में काम करता है।

सादर,

ग्लेन


8
ओपी ने जो मांगा, उसके विपरीत ग्लेन यह है। _ स्वयं दस्तावेज़ को उसी विंडो या फ़्रेम में खोलेगा।
20

इसके अलावा यह प्रोग्रामेटिक तरीके से खुलने का तरीका नहीं है। आश्चर्य यह है कि इस उत्तर के साथ यह +10 प्रतिनिधि (+ 3 / -10) कैसे प्राप्त करता है।
वसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.