javascript schließen Öffnen Sie einen neuen Tab im Hintergrund?




javascript window.open popup (5)

Versuche dies. Es funktioniert gut mit Chrom, es funktionierte auch von Chrom-Erweiterung. All das hat bei mir nicht funktioniert.

chrome.tabs.create({ url: "http://www.google.com/", selected: false }); 

Mit Javascript möchte ich eine neue Seite in einem anderen Tab öffnen, aber auf den aktuellen Tab fokussiert bleiben. Ich weiß, dass ich es so machen kann:

open('http://example.com/');
focus();

Wenn ich dies jedoch in Chrome mache, blinkt die neue Registerkarte kurz, bevor ich zur aktuellen Registerkarte zurückwechsle. Ich möchte das vermeiden.

Die Anwendung ist ein persönliches Bookmarklet und muss nur im aktuellen Chrome funktionieren.


UPDATE: In Version 41 von Google Chrome schien initMouseEvent ein verändertes Verhalten zu haben.

Dies kann durch Simulation von ctrl + click (oder einer beliebigen anderen Kombination aus Schlüssel und Ereignis, die eine Hintergrundregisterkarte öffnen) für ein dynamisch erzeugtes Element mit einem href Attribut, das auf die gewünschte url

In Aktion: 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);
}

nur auf Chrom getestet


Soweit ich mich erinnere, wird dies durch Browsereinstellungen gesteuert. Mit anderen Worten: Der Benutzer kann wählen, ob er eine neue Registerkarte im Hintergrund oder Vordergrund öffnen möchte. Sie können auch auswählen, ob ein neues Popup in einem neuen Tab oder nur ... Popup geöffnet werden soll.

Zum Beispiel in Firefox Präferenzen:

Beachten Sie die letzte Option.


Hier finden Sie ein vollständiges Beispiel zum Navigieren einer gültigen URL auf einem neuen Tab mit Fokus.

HTML:

<div class="panel">
  <p>
    Enter Url: 
    <input type="text" id="txturl" name="txturl" size="30" class="weburl" />
    &nbsp;&nbsp;    
    <input type="button" id="btnopen"  value="Open Url in New Tab" onclick="openURL();"/>
  </p>
</div>

CSS:

.panel{
  font-size:14px;
}
.panel input{
  border:1px solid #333;
}

JAVASCRIPT:

function isValidURL(url) {
    var RegExp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;

    if (RegExp.test(url)) {
        return true;
    } else {
        return false;
    }
}

function openURL() {
    var url = document.getElementById("txturl").value.trim();
    if (isValidURL(url)) {
        var myWindow = window.open(url, '_blank');
        myWindow.focus();
        document.getElementById("txturl").value = '';
    } else {
        alert("Please enter valid URL..!");
        return false;
    }
}

Ich habe auch einen Behälter mit der Lösung auf http://codebins.com/codes/home/4ldqpbw


THX für diese Frage! Funktioniert für mich in allen gängigen Browsern:

function openNewBackgroundTab(){
    var a = document.createElement("a");
    a.href = window.location.pathname;
    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);
}

var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
if(!is_chrome)
{
    var url = window.location.pathname;
    var win = window.open(url, '_blank');
} else {
    openNewBackgroundTab();
}




google-chrome