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.

user1065055
la source

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.

vdbuilder
la source
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

andromède
la source
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');
Tom Berthold
la source
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.

Magesh
la source
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);
}
Muaz Khan
la source
10

Ouvrez une autre URL comme un lien de clic

window.location.href = "http://example.com";
DarckBlezzer
la source
8

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

Jeffrey Zhao
la source
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 ~~

ijse
la source
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)
}
Adi Prasetyo
la source
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.

Samit
la source
1

Exactement comme ça window.open("www.youraddress.com","_self")

thanglv
la source
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> 
Siddharth Shukla
la source
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");
    },
xgqfrms
la source
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