Symeon Breen
Symeon Breen

Reputation: 1541

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

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.

Upvotes: 4

Views: 2244

Answers (4)

Shaikh Farooque
Shaikh Farooque

Reputation: 2640

only break; will give you your required results.

Upvotes: 0

steveukx
steveukx

Reputation: 4368

In the example that isn't working, you are missing a break in the switch statement:

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

Upvotes: 2

SLaks
SLaks

Reputation: 887469

You need to break; your cases.

Upvotes: 1

James Allardice
James Allardice

Reputation: 165981

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.

Upvotes: 5

Related Questions