I know that this question is uber old, but it perfectly described the problem I needed answered, and I was able to come up with a decent solution, so I thought I'd post it here. It's an interesting workaround.
Essentially you set a timeout to delay forwarding the current page to the new url, and then open the current url in a new tab. So:
function open_hidden_tab(new_url) {
var thisTimeout= setTimeout(function() {
window.location.href= new_url;
}, 500);
var newWindow= window.open(window.location.href);
if(!newWindow) {
clearTimeout(thisTimeout);
alert('Please allow pop-ups on this site!');
}
}
open_hidden_tab('https://google.com');
Obviously, you should show some kind of error message on your site instead of using the annoying alert function, but it works for the purposes of this example.
Hope this helps someone!