Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

window.open in a function replaces current tab as well as opens new tab

Tags:

javascript

I have a funny complication i would like to understand, if i have window.open as the onclick event of an anchor, a new tab is opened as required. If the onclick calls a function, which in turn does a window.open a new tab is opened, but also the current tab gets the new url as well.

I can demonstrate it here it works ok when you click on the link, wheras here the url is also opened in the results area as well !

Thanks Symeon.

like image 489
Symeon Breen Avatar asked Feb 21 '23 18:02

Symeon Breen


1 Answers

Your first case statement is falling through. You need to add a break:

switch (t) {
    case 1: 
        window.open(url,"_blank");
        break;
    case 2: 
        window.location = url;
        break;
}

Without the break, every case below the one that was first matched will be executed.

I have added a break to the second case too, simply because it's generally considered good practice to always break a case. In fact, JSLint will flag a missing break as an error.

like image 120
James Allardice Avatar answered Mar 01 '23 23:03

James Allardice