एक ही विंडो में और एक ही टैब में URL खोलें


361

मैं उसी विंडो में और उसी टैब में एक लिंक खोलना चाहता हूं जिसमें लिंक वाला पेज हो।

जब मैं उपयोग करके किसी लिंक को खोलने का प्रयास करता हूं window.open, तो यह नए टैब में खुलता है - उसी विंडो में एक ही टैब में नहीं।

जवाबों:


599

आपको नाम विशेषता का उपयोग करने की आवश्यकता है:

window.open("https://www.youraddress.com","_self")

संपादित करें : Url को प्रोटोकॉल के साथ तैयार किया जाना चाहिए। इसके बिना रिश्तेदार url खोलने की कोशिश करता है। Chrome 59, फ़ायरफ़ॉक्स 54 और IE 11 में परीक्षण किया गया।


2
दूसरा तर्क नई विंडो के लिए एक नाम है, जैसे target=टैग की विशेषता a। वास्तव में, आप अपनी खिड़की को जो चाहें पसंद कर सकते हैं। आपको जो कुछ भी चाहिए वह इसे अलग मूल्य पर सेट करना है, ताकि यह एक ही विंडो या टैब में न खुले।
ijse

11
@ijse वास्तव में, कुछ विशेष नाम हैं, जिनमें से एक '_self' है जो उस जीत / टैब को संदर्भित करता है जिसमें कोड चल रहा है।)
vdbuilder

5
'_self' MDN [ developer.mozilla.org/en-US/docs/Web/API/Window/open] डॉक्स पर window.open () में निर्दिष्ट नहीं है । एक अधिक क्रॉस-ब्राउज़र समाधान स्थान .replace () का उपयोग करना है।
ब्रायन रेनर

1
टिप्पणी में MDN ऊपर दिए लिंक पर ऑटो लिंक करने वाले 404. लिंक करने के लिए है है developer.mozilla.org/en-US/docs/Web/API/Window/open
groovecoder

_selfअनुभाग में बताया गया है 5.1.6 ब्राउज़िंग संदर्भ नामों की एचटीएमएल 5 W3C सिफारिश 28 अक्टूबर 2014 पर: w3.org/TR/html/browsers.html#browsing-context-names (लेकिन window.locationअभी भी क्लीनर है)।
डेम पिलाफियन


62

यह सुनिश्चित करने के लिए कि लिंक एक ही टैब में खोला गया है, आपको उपयोग करना चाहिए window.location.replace()

नीचे दिए गए उदाहरण देखें:

window.location.replace("http://www.w3schools.com");

स्रोत: http://www.w3schools.com/jsref/met_loc_replace.asp


3
यह ब्राउज़िंग इतिहास को संरक्षित नहीं करता है, हमें इसका उपयोग नहीं करना चाहिए। इसके बजाय window.open (" google.com", "_ top" ) संदर्भ लिंक geeksforgeeks.org/…
shyam_

2
यह मेरे लिए अच्छा है, धन्यवाद दोस्त
एंजेलस रोमन

28

आप url को निर्दिष्ट किए बिना उसी पृष्ठ पर जा सकते हैं:

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

यह वही पृष्ठ नहीं है। यह मौजूदा URL से किसी भी क्वेरी स्ट्रिंग को हटा देगा।
क्वेंटिन

20

यदि आपके पृष्ठ "फ़्रेम" के अंदर हैं, तो "Window.open ('logout.aspx', '_ self')"

एक ही फ्रेम के अंदर पुनर्निर्देशित किया जाएगा। तो उपयोग करके

"Window.open('logout.aspx','_top')"

हम पेज को नए अनुरोध के रूप में लोड कर सकते हैं।


11

सबसे प्रमुख जावास्क्रिप्ट विशेषताओं में से एक मक्खी पर ऑनक्लिक हैंडलर्स को फायर करना है। मैंने निम्नलिखित तंत्र का उपयोग करने location.href=''या location.reload()उसकी तुलना में अधिक विश्वसनीय पाया window.open:

// this function can fire onclick handler for any DOM-Element
function fireClickEvent(element) {
    var evt = new window.MouseEvent('click', {
        view: window,
        bubbles: true,
        cancelable: true
    });

    element.dispatchEvent(evt);
}

// this function will setup a virtual anchor element
// and fire click handler to open new URL in the same room
// it works better than location.href=something or location.reload()
function openNewURLInTheSameWindow(targetURL) {
    var a = document.createElement('a');
    a.href = targetURL;
    fireClickEvent(a);
}

उपरोक्त कोड नए टैब / विंडो खोलने और सभी पॉप-अप ब्लॉकर्स को दरकिनार करने में भी सहायक है !!! उदाहरण के लिए

function openNewTabOrNewWindow(targetURL) {
    var a = document.createElement('a');
    a.href = targetURL;

    a.target = '_blank'; // now it will open new tab/window and bypass any popup blocker!

    fireClickEvent(a);
}

10

लिंक में क्लिक की तरह एक और url खोलें

window.location.href = "http://example.com";

8

क्या आपको उपयोग करना है window.open? उपयोग करने के बारे में क्या window.location="http://example.com"?


5

window.open(url, wndname, params), इसके तीन तर्क हैं। यदि आप इसे एक ही विंडो में नहीं खोलना चाहते हैं, तो बस एक अलग wndname सेट करें। जैसे कि :

window.open(url1, "name1", params); // this open one window or tab
window.open(url1, "name2", params); // though url is same, but it'll open in another window(tab).

यहाँ के बारे में विवरण है window.open(), आप इस पर भरोसा कर सकते हैं!
https://developer.mozilla.org/en/DOM/window.open

एक कोशिश ~~


7
सवाल बहुत स्पष्ट रूप से एक ही खिड़की और एक ही टैब में खोलने के बारे में है !
एसएनएग

2

Html 5 के साथ आप इतिहास एपीआई का उपयोग कर सकते हैं ।

history.pushState({
  prevUrl: window.location.href

}, 'Next page', 'http://localhost/x/next_page');
history.go();

फिर अगले पेज पर आप राज्य ऑब्जेक्ट को इस तरह एक्सेस कर सकते हैं

let url = history.state.prevUrl;
if (url) {
  console.log('user come from: '+ url)
}

1

यह बहुत आसान है। के रूप में पहली विंडो खोलेंwindow.open(url, <tabNmae>)

उदाहरण: window.open("abc.com",'myTab')

और अगले सभी window.open के लिए, के बजाय एक ही टैब नाम का उपयोग करें _self, _parentआदि।



1
   Just Try in button.

   <button onclick="location.reload();location.href='url_name'" 
   id="myButton" class="btn request-callback" >Explore More</button>

   Using href 

  <a href="#" class="know_how" onclick="location.reload();location.href='url_name'">Know More</a> 

यह वर्तमान पृष्ठ के पुनः लोड को ट्रिगर करने के लिए बिल्कुल भी कोई मतलब नहीं है और फिर इसे अगले बयान में एक नया पृष्ठ लोड करके रद्द कर देता है।
क्वेंटिन

-3

जैसा कि एमडीएन के रेफरी कहते हैं, बस नए window/ का नाम देने की आवश्यकता है tab

https://developer.mozilla.org/en-US/docs/Web/API/Window/open#Syntax

वर्तमान टैब पृष्ठ का उपयोग करके खोलें _self

<a
 href="url"
 target="_self">
   open
</a>
const autoOpenAlink = (url = ``) => {
  window.open(url, "open testing page in the same tab page");
}

उपयोग करके एक नया टैब पृष्ठ खोलें _blank

Vue डेमो

    <div style="margin: 5px;">
        <a
            :href="url"
            @click="autoOpenAlink"
            target="_blank"
            >
            {{url}}
        </a>
    </div>

Vue

    autoOpenAlink(e) {
        e.preventDefault();
        let url = this.url;
        window.open(url, "iframe testing page");
    },

आप मज़बूती से वर्तमान विंडो का नाम नहीं जान सकते। इस 2011 के उत्तर से सलाह का पालन करने के लिए बेहतर है और विशेष _self नाम का उपयोग करें।
क्वेंटिन

आपका पहला उदाहरण सिर्फ गलत है। _blank, स्पष्ट रूप से, एक अनाम नई विंडो या टैब है।
क्वेंटिन

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

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