Apri l'URL nella stessa finestra e nella stessa scheda


361

Voglio aprire un collegamento nella stessa finestra e nella stessa scheda che contiene la pagina con il collegamento.

Quando provo ad aprire un collegamento usando window.open, quindi si apre in una nuova scheda, non nella stessa scheda nella stessa finestra.

Risposte:


600

Devi usare l'attributo name:

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

Modifica : l'URL deve essere anteposto con il protocollo. Senza di essa tenta di aprire l'URL relativo. Testato su Chrome 59, Firefox 54 e IE 11.


2
Il secondo argomento è solo un nome per la nuova finestra, come l'attributo target=del tag a. In effetti, puoi dare un nome alla tua finestra come preferisci. Tutto ciò di cui hai bisogno è impostare un valore diverso, in modo che non si apra nella stessa finestra o scheda.
ijse

12
@ijse In realtà, ci sono alcuni nomi speciali, uno dei quali è '_self' che si riferisce alla win / tab in cui è in esecuzione il codice.;)
vdbuilder il

5
'_self' non è specificato nei documenti MDN [ developer.mozilla.org/en-US/docs/Web/API/Window/open] su window.open (). Una soluzione più cross-browser consiste nell'utilizzare location.replace ().
Bryan Rayner,

1
Il collegamento MDN nel commento sopra è il collegamento automatico a un 404. Il collegamento è developer.mozilla.org/en-US/docs/Web/API/Window/open
groovecoder

_selfè menzionato nella sezione 5.1.6 Esplorazione dei nomi di contesto della raccomandazione HTML5 W3C del 28 ottobre 2014 all'indirizzo: w3.org/TR/html/browsers.html#browsing-context-names (ma window.locationè ancora più pulito).
Dem Pilafian,


62

Al fine di garantire che il collegamento sia aperto nella stessa scheda, è necessario utilizzare window.location.replace()

Vedi l'esempio seguente:

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

Fonte: http://www.w3schools.com/jsref/met_loc_replace.asp


3
Non conserva la cronologia di navigazione, non dovremmo usarla. prova invece il link di riferimento window.open (" google.com", "_ top" ) geeksforgeeks.org/…
shyam_

2
questo è buono per me, grazie amico
Angelus Roman il

28

Puoi farlo andare nella stessa pagina senza specificare l'URL:

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

Questa non è la stessa pagina. Rimuoverà qualsiasi stringa di query dall'URL esistente.
Quentin,

20

Se hai le tue pagine all'interno di "frame", allora "Window.open ('logout.aspx', '_ self')"

verrà reindirizzato all'interno dello stesso frame. Quindi usando

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

possiamo caricare la pagina come nuova richiesta.


11

Una delle funzionalità javascript più importanti è quella di attivare al volo gestori onclick. Ho trovato il seguente meccanismo più affidabile dell'uso location.href=''o location.reload()o 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);
}

Il codice sopra è anche utile per aprire una nuova scheda / finestra e bypassare tutti i blocchi popup !!! Per esempio

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

Apri un altro URL come un clic nel link

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

8

Devi usare window.open? Che ne dici di usare window.location="http://example.com"?


5

window.open(url, wndname, params), ha tre argomenti. se non lo vuoi aprire nella stessa finestra, basta impostare un wndname diverso. ad esempio :

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).

Ecco i dettagli su window.open(), puoi fidarti!
https://developer.mozilla.org/en/DOM/window.open

prova ~~


7
La domanda è molto chiara sul voler aprire nella stessa finestra e nella stessa scheda !
SNag

2

Con HTML 5 puoi utilizzare l' API della cronologia .

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

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

Quindi nella pagina successiva puoi accedere all'oggetto stato in questo modo

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

1

È abbastanza facile. Apri la prima finestra comewindow.open(url, <tabNmae>)

Esempio: window.open("abc.com",'myTab')

e per tutto il prossimo window.open, usa lo stesso nome di scheda invece di _self, _parentecc.


1

Proprio così window.open("www.youraddress.com","_self")


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> 

Non ha alcun senso innescare un ricaricamento della pagina corrente e quindi annullarlo nell'istruzione successiva caricando una nuova pagina.
Quentin,

-3

Come dice il ref di MDN, basta dare un nome al nuovo window/ tab.

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

apri nella scheda corrente usando _self

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

aprire in una nuova scheda usando _blank

vue demo

    <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");
    },

Non puoi conoscere in modo affidabile il nome della finestra corrente. Meglio seguire i consigli di questa risposta del 2011 e usare lo stesso nome speciale.
Quentin,

Il tuo primo esempio è semplicemente sbagliato. _blank è, esplicitamente, una nuova finestra o scheda senza nome .
Quentin,

Affatto! se imposto _ stesso, si aprirà nella pagina corrente, il che è male per me, ho solo bisogno di una nuova pagina.
xgqfrms

La domanda non riguarda ciò di cui hai bisogno! Se vuoi rispondere a una domanda su ciò di cui hai bisogno, trova una domanda che lo richieda.
Quentin,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.