Open a new tab in the background?

google-chrome, javascript

Solution

UPDATE: By version 41 of Google Chrome, `initMouseEvent` seemed to have a changed behavior, and so this answer no longer works. Thanks to @Daniel Andersson for his comment.

this can be done by simulating `ctrl` + `click` (or any other key/event combinations that open a background tab) on a dynamically generated `a` element with its `href` attribute set to the desired `url`

In action: fiddle

function openNewBackgroundTab(){
    var a = document.createElement("a");
    a.href = "http://www.google.com/";
    var evt = document.createEvent("MouseEvents");
    //the tenth parameter of initMouseEvent sets ctrl key
    evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0,
                                true, false, false, false, 0, null);
    a.dispatchEvent(evt);
}

tested only on chrome

Problem

Using javascript, I want to open a new page in a different tab, but remain focused on the current tab. I know I can do it like this: ``` open('http://example.com/'); focus(); ``` However, when I do this in chrome, it flashes the new tab for a moment before switching back to the current tab. I want to avoid this. The application is a personal bookmarklet, so it only has to work in the latest Chrome.

Original source

Related problems