पृष्ठभूमि में एक नया टैब खोलें?


79

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

open('http://example.com/');
focus();

हालांकि, जब मैं क्रोम में ऐसा करता हूं, तो यह नए टैब को चालू टैब पर वापस करने से पहले एक पल के लिए चमकता है। मैं इससे बचना चाहता हूं।

एप्लिकेशन एक व्यक्तिगत बुकमार्क है, इसलिए इसे केवल नवीनतम क्रोम में काम करना होगा।


w3schools.com/js/js_ex_browser.asp इनमें से किसी को भी आज़माएं
कोड जासूस

1
@ jolly.exe धन्यवाद, लेकिन क्रोम में नए पृष्ठ को दिखाने से बचने वालों में से कोई भी नहीं है।
सेंट-बूस्ट

3
इस प्रश्न का एक डुप्लिकेट लगता है stackoverflow.com/questions/6897430/… समाधान Chrome एक्सटेंशन एपीआई का उपयोग करना है।
विलेम जोस्टेन

@WillemJoosten ने पहले उत्तर के लिए धन्यवाद जो वास्तव में लक्ष्य को पूरा किया है। लेकिन क्या किसी एक्सटेंशन के बाहर ऐसा करने का कोई तरीका है? लाभ इतना छोटा है कि विस्तार को स्थापित करने में लगने वाले समय से आगे निकल जाएगा।
सेंट-बूस्ट 11

जवाबों:


102

अद्यतन: Google Chrome के संस्करण 41 से, initMouseEvent लगता है कि एक परिवर्तित व्यवहार है।

यह गतिशील रूप से उत्पन्न तत्व पर वांछित विशेषता सेट के साथ ctrl+ click(या कोई अन्य कुंजी / घटना संयोजन जो एक पृष्ठभूमि टैब खोलते हैं) अनुकरण करके किया जा सकता हैahrefurl

कार्रवाई में: बेला

function openNewBackgroundTab(){
    var a = document.createElement("a");
    a.href = "http://www.google.com/";
    var evt = document.createEvent("MouseEvents");
    //the tenth parameter of initMouseEvent sets ctrl key
    evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0,
                                true, false, false, false, 0, null);
    a.dispatchEvent(evt);
}

केवल क्रोम पर परीक्षण किया गया


8
बहुत बढ़िया, मुझे लगता है कि हमें मिल गया। एक महत्वपूर्ण नोट हालांकि: OSX पर यह मेटाके मान है जिसे सही होने की आवश्यकता है।
सेंट-बूस्ट

4
एक और ध्यान दें: यह उन URL के साथ काम नहीं करेगा जिनके पास सेट होने तक लंगर पाठ है a.target='_blank';
सेंट-बूस्ट

1
यह बहुत मदद करता है। तुम कमाल हो: D
iAnuj

25
ऐसा लगता है कि Google Chrome dev रिलीज़ 41.0.2224.0, 2014-11-20 (लिनक्स पर परीक्षण) के साथ काम करना बंद कर दिया गया है। आश्चर्य की बात नहीं है क्योंकि मुझे लगता है कि यह "अनपेक्षित कार्यक्षमता" के साथ शुरू करने के लिए था, लेकिन स्थानीय अनुप्रयोगों में इसका बहुत उपयोग होने के बाद से मैं परेशान हूं। Chrome के स्थिर और बीटा चैनल अभी तक अप्रभावित रहना चाहिए, लेकिन संभवतः परिवर्तनों को जल्द ही मर्ज कर देगा।
डैनियल एंडरसन 12

5
@ maggot092 का उपयोग करते हुए MouseEvent('click', {view: window, ctrlKey: true, metaKey: true});, नया खोला गया टैब अभी भी फोकस चुरा रहा है। क्या मैं कुछ भूल रहा हूँ?
Stepan Parunashvili

9

इस सवाल के लिए THX! सभी लोकप्रिय ब्राउज़रों पर मेरे लिए अच्छा काम करता है:

function openNewBackgroundTab(){
    var a = document.createElement("a");
    a.href = window.location.pathname;
    var evt = document.createEvent("MouseEvents");
    //the tenth parameter of initMouseEvent sets ctrl key
    evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0,
                                true, false, false, false, 0, null);
    a.dispatchEvent(evt);
}

var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
if(!is_chrome)
{
    var url = window.location.pathname;
    var win = window.open(url, '_blank');
} else {
    openNewBackgroundTab();
}

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

1

जहाँ तक मुझे याद है, यह ब्राउज़र सेटिंग्स द्वारा नियंत्रित किया जाता है। दूसरे शब्दों में: उपयोगकर्ता यह चुन सकता है कि वे पृष्ठभूमि या अग्रभूमि में नया टैब खोलना चाहते हैं या नहीं। इसके अलावा वे चुन सकते हैं कि नए पॉपअप को नए टैब में खोलना चाहिए या बस ... पॉपअप।

उदाहरण के लिए फ़ायरफ़ॉक्स वरीयताओं में:

फ़ायरफ़ॉक्स सेटअप उदाहरण

अंतिम विकल्प पर ध्यान दें।


3
धन्यवाद, लेकिन मैं एक ऐसी वेबसाइट से कुछ नियंत्रित करने की उम्मीद कर रहा हूं, क्योंकि मैं नहीं चाहता कि यह अन्य वेबसाइटों को प्रभावित करे। (यह भी, ctrl / cmd + क्लिक एक ही काम करता है - मैं इसका हर समय उपयोग करता हूं)
को st-boost

1
यह जावास्क्रिप्ट के लिए नहीं है, केवल ब्राउज़र सेटिंग के लिए है।
लिन

0

मैंने वही किया जो आप बहुत सरल तरीके से देख रहे हैं। यह Google क्रोम और ओपेरा में पूरी तरह से चिकनी है, और फ़ायरफ़ॉक्स और सफारी में लगभग सही है। IE में परीक्षण नहीं किया गया।


function newTab(url)
{
    var tab=window.open("");
    tab.document.write("<!DOCTYPE html><html>"+document.getElementsByTagName("html")[0].innerHTML+"</html>");
    tab.document.close();
    window.location.href=url;
}

फिडल: http://jsfiddle.net/tFCnA/show/

स्पष्टीकरण:
मान लें कि विंडोज़ A1 और B1 है और वेबसाइट A2 और B2 हैं।
बी 1 में बी 2 खोलने और फिर ए 1 पर लौटने के बजाय, मैं ए 1 में बी 2 खोलता हूं और बी 1 में ए 2 को फिर से खोलता हूं।
(यह काम करता है एक और बात यह है कि मैं उपयोगकर्ता को फिर से डाउनलोड A2 नहीं बनाता, पंक्ति 4 देखें)


केवल एक चीज जिसे आप पसंद नहीं कर सकते हैं वह यह है कि नया टैब मुख्य पृष्ठ से पहले खुलता है।


1
धन्यवाद, यह एक चतुर दृष्टिकोण है। हालाँकि, इसमें कई समस्याएं हैं, जिसमें क्लोबिंग इवेंट श्रोताओं, ब्राउज़र इतिहास को गलत तरीके से बदलना, संभावित रूप से सिद्धांत को बदलना और html तत्व पर विशेषताओं को त्यागना शामिल है, इस तथ्य का उल्लेख नहीं करना कि यह वास्तव में "एक अलग पृष्ठ में एक नया पृष्ठ नहीं खोलता है" टैब "।
सेंट-बूस्ट

यह एक अलग टैब में एक नया पृष्ठ क्यों नहीं खोलता है?
माजेक

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

-3

यहां ध्यान केंद्रित के साथ एक नए टैब पर मान्य URL नेविगेट करने के लिए एक पूर्ण उदाहरण है।

HTML:

<div class="panel">
  <p>
    Enter Url: 
    <input type="text" id="txturl" name="txturl" size="30" class="weburl" />
    &nbsp;&nbsp;    
    <input type="button" id="btnopen"  value="Open Url in New Tab" onclick="openURL();"/>
  </p>
</div>

सीएसएस:

.panel{
  font-size:14px;
}
.panel input{
  border:1px solid #333;
}

JAVASCRIPT:

function isValidURL(url) {
    var RegExp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;

    if (RegExp.test(url)) {
        return true;
    } else {
        return false;
    }
}

function openURL() {
    var url = document.getElementById("txturl").value.trim();
    if (isValidURL(url)) {
        var myWindow = window.open(url, '_blank');
        myWindow.focus();
        document.getElementById("txturl").value = '';
    } else {
        alert("Please enter valid URL..!");
        return false;
    }
}

मैंने http://codebins.com/codes/home/4ldqpbw पर समाधान के साथ एक बिन भी बनाया है


2
धन्यवाद, लेकिन मुझे लगता है कि आपने मेरे प्रश्न को गलत समझा। मैं चाहता हूं कि ओपनर पेज अंत में केंद्रित हो, न कि नया टैब - और सवाल यह है कि मैं नए टैब को एक पल के लिए भी प्रदर्शित करने से कैसे बच सकता हूं।
सेंट-बूस्ट

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