Ouvrir l'URL dans la même fenêtre et dans le même onglet


361

Je veux ouvrir un lien dans la même fenêtre et dans le même onglet qui contient la page avec le lien.

Lorsque j'essaie d'ouvrir un lien à l'aide de window.open, il s'ouvre dans un nouvel onglet, pas dans le même onglet dans la même fenêtre.

Réponses:


600

Vous devez utiliser l'attribut name:

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

Modifier : l'URL doit être précédée du protocole. Sans cela, il essaie d'ouvrir l'URL relative. Testé dans Chrome 59, Firefox 54 et IE 11.


2
Le deuxième argument est juste un nom à la nouvelle fenêtre, comme l'attribut target=de tag a. En fait, vous pouvez nommer votre fenêtre comme bon vous semble. Tout ce dont vous avez besoin est de lui attribuer une valeur différente, afin qu'il ne s'ouvre pas dans la même fenêtre ou le même onglet.
ijse

12
@ijse En fait, il y a quelques noms spéciaux, dont «_self» qui fait référence à la victoire / tabulation dans laquelle le code s'exécute.;)
vdbuilder

5
'_self' n'est pas spécifié dans les documents MDN [ developer.mozilla.org/en-US/docs/Web/API/Window/open] sur window.open (). Une solution plus multi-navigateur consiste à utiliser location.replace ().
Bryan Rayner,

1
Le lien MDN dans le commentaire ci-dessus est un lien automatique vers un 404. Le lien est developer.mozilla.org/en-US/docs/Web/API/Window/open
groovecoder

_selfest mentionné dans la section 5.1.6 Noms de contexte de navigation de la recommandation HTML5 W3C du 28 octobre 2014 à: w3.org/TR/html/browsers.html#browsing-context-names (mais window.locationest toujours plus propre).
Dem Pilafian


62

Afin de vous assurer que le lien est ouvert dans le même onglet, vous devez utiliser window.location.replace()

Voir l'exemple ci-dessous:

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

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


3
Il ne préserve pas l'historique de navigation, nous ne devons pas l'utiliser. essayez plutôt window.open (" google.com", "_ top" ) lien de référence geeksforgeeks.org/…
shyam_

2
c'est bon pour moi, merci mec
Angelus Roman

29

Vous pouvez le faire aller sur la même page sans spécifier l'url:

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

Ce n'est pas la même page. Il supprimera toute chaîne de requête de l'URL existante.
Quentin

20

Si vous avez vos pages dans "frame", alors "Window.open ('logout.aspx', '_ self')"

sera redirigé dans le même cadre. Donc en utilisant

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

nous pouvons charger la page en tant que nouvelle demande.


11

L'une des fonctionnalités javascript les plus importantes consiste à déclencher les gestionnaires onclick à la volée. J'ai trouvé le mécanisme suivant plus fiable que l'utilisation de location.href=''ou location.reload()ou 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);
}

Le code ci-dessus est également utile pour ouvrir un nouvel onglet / fenêtre et contourner tous les bloqueurs de fenêtres publicitaires !!! Par exemple

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

Ouvrez une autre URL comme un lien de clic

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

8

Devez-vous utiliser window.open? Qu'en est-il de l'utilisation window.location="http://example.com"?


5

window.open(url, wndname, params), il a trois arguments. si vous ne voulez pas l'ouvrir dans la même fenêtre, définissez simplement un nom de domaine différent. tel que :

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

Voici les détails window.open(), vous pouvez lui faire confiance!
https://developer.mozilla.org/en/DOM/window.open

essayez ~~


7
La question est très clairement de vouloir ouvrir dans la même fenêtre et le même onglet !
SNag

2

Avec html 5, vous pouvez utiliser l'API historique .

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

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

Ensuite, sur la page suivante, vous pouvez accéder à l'objet d'état comme ceci

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

1

C'est assez simple. Ouvrir la première fenêtre commewindow.open(url, <tabNmae>)

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

et pour next all window.open, utilisez le même nom d'onglet au lieu de _self, _parentetc.


1

Exactement comme ça 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> 

Cela n'a aucun sens de déclencher un rechargement de la page en cours, puis de l'annuler dans l'instruction suivante en chargeant une nouvelle page.
Quentin

-3

Comme le disent les références de MDN, il suffit de donner un nom au nouveau window/ tab.

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

ouvrir dans la page à onglet actuelle en utilisant _self

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

ouvrir dans une nouvelle page à onglet en utilisant _blank

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

Vous ne pouvez pas connaître de manière fiable le nom de la fenêtre actuelle. Mieux vaut suivre les conseils de cette réponse 2011 et utiliser le nom spécial _self.
Quentin

Votre premier exemple est tout simplement faux. _blank est, explicitement, une nouvelle fenêtre ou un nouvel onglet sans nom .
Quentin

pas du tout! si je mets _self, il s'ouvrira dans la page courante ce qui est mauvais pour moi, j'ai juste besoin d'une nouvelle page.
xgqfrms

La question n'est pas de ce dont vous avez besoin! Si vous voulez répondre à une question sur ce dont vous avez besoin, alors trouvez une question qui le demande.
Quentin
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.