comportamento window.open in chrome tabs / windows

Ho un piccolo bit di javascript destinato ad aprire due o più tabs. Funziona bene in FF e IE, ma Chrome apre il secondo in una nuova finestra anziché in una scheda. Non dipende dall’URL come ho provato con due URL identici. Prima si apre in una scheda, la seconda in una nuova finestra.

Ecco il mio snippet di codice:

for(var i=0 ; i<sites.length ;i++) { window.open(sites[i].Url); } 

Chrome apre automaticamente un URL in una nuova scheda solo se è un’azione generata dall’utente, limitata a una scheda per azione dell’utente. In ogni altro caso, l’URL verrà aperto in una nuova finestra (che, a titolo di esempio, è bloccata per impostazione predefinita su Chrome).
window.open deve essere chiamato all’interno di un callback triggersto da un’azione dell’utente (ad esempio onclick) per l’apertura della pagina in una nuova scheda anziché in una finestra.

Nell’esempio, si tenta di aprire N tab in seguito all’azione dell’utente. Ma solo il primo viene aperto in una nuova scheda (perché è un’azione generata dall’utente). In seguito, qualsiasi altro URL verrà aperto in una nuova finestra.

Domanda simile: forza window.open () per creare una nuova scheda in chrome (vedi risposta di maclema)

Mi sono imbattuto in questa domanda Qual è il costrutto (function () {}) () in JavaScript? che fornisce una spiegazione su IIFE. Penso che questo possa essere usato finita. Per favore, sopportami. Non ho una profonda conoscenza di javascript. Ma ho provato come sotto e il suo funzionamento.

 var sites = [{"url" : "http://www.google.com"} , {"url" : "http://www.yahoo.com"} , {"url" : "http://www.msn.com"}]; console.log(sites); for( var i=0 ; i < sites.length ;i++) { (function(i) { console.log(i); window.open(sites[i].url , "_blank"); })(i); } 

Apre l'url in nuove tabs in chrome.