519 votes

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

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 en utilisant window.open Il s'ouvre alors dans un nouvel onglet, et non dans le même onglet de la même fenêtre.

0 votes

Vous pourriez vouloir vérifier ceci poste pour comprendre les différences entre les méthodes proposées ci-dessous, comme _self y _top quel "sosie".

872voto

vdbuilder Points 2498

Vous devez utiliser l'attribut name :

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

Editar : L'URL doit être précédée du protocole. Sans cela, il tente d'ouvrir une url relative. Testé dans Chrome 59, Firefox 54 et IE 11.

2 votes

Le deuxième argument est juste un nom pour la nouvelle fenêtre, comme l'attribut target= de l'étiquette a . En fait, vous pouvez nommer votre fenêtre comme vous le souhaitez. Il vous suffit de lui attribuer une valeur différente, afin qu'elle ne s'ouvre pas dans la même fenêtre ou le même onglet.

15 votes

@ijse En fait, il y a quelques noms spéciaux, dont '_self' qui se réfère à la fenêtre/à l'onglet dans lequel le code est exécuté ;)

5 votes

_self' n'est pas spécifié dans le MDN [ [developer.mozilla.org/fr/US/docs/Web/API/Window/open]](https://developer.mozilla.org/en-US/docs/Web/API/Window/open]) docs sur window.open(). Une solution plus inter-navigateur consiste à utiliser location.replace().

197voto

david Points 3830

Utilisez ça :

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

22 votes

Cette option est préférable à window.open (par stackoverflow.com/questions/4813879/ )

0 votes

Airbnb linter n'aime pas l'emplacement.herf. mentionner la fenêtre au début est le must.

22voto

Magesh Points 133

Si vous avez vos pages à l'intérieur d'un "frame" alors "Window.open('logout.aspx', '_self')"

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

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

nous pouvons charger la page comme une nouvelle requête.

12voto

Muaz Khan Points 1744

L'une des fonctions les plus importantes de javascript est de déclencher des gestionnaires de clics à la volée. J'ai trouvé le mécanisme suivant plus fiable que l'utilisation de 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);
}

Le code ci-dessus est également utile pour ouvrir un nouvel onglet/fenêtre et contourner tous les bloqueurs de pop-up ! !! 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);
}

11voto

Jeffrey Zhao Points 2200

Devez-vous utiliser window.open ? Et si vous utilisiez window.location="http://example.com" ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X