Forza window.open () per creare una nuova scheda in chrome

Io uso window.open per popolare una nuova finestra con contenuti diversi. Principalmente report e HTML memorizzati da processi automatizzati.

Ho notato alcuni comportamenti molto incoerenti con Chrome rispetto a window.open ().

Alcune delle mie chiamate creeranno una nuova scheda (comportamento preferito) e alcuni popup di causa.

var w = window.open('','_new'); w.document.write(page_content); 

page_content è solo un normale HTML dalle chiamate AJAX. I report contengono alcune informazioni nell’intestazione come titolo, favicon e alcuni fogli di stile.

In IE9 il codice causa una nuova scheda invece di una finestra popup, mentre Chrome rifiuta categoricamente di mostrare il contenuto in questione in una nuova scheda. Poiché il contenuto è un dato aziendale sensibile, non posso postarlo qui. Risponderò alle domande se posso.

So che alcune persone diranno che questo è un comportamento lasciato all’utente, ma questa è una piattaforma di business interna. Non abbiamo il tempo di addestrare tutti gli utenti su come gestire i popup e abbiamo solo bisogno che sia in una nuova scheda. Diamine, anche una nuova finestra sarebbe preferibile al popup in quanto non è ansible colbind un popup in Chrome. Per non parlare di nessuno dei codici di blocco popup potrebbe influenzarlo.

Apprezzo qualsiasi intuizione.

window.open deve essere chiamato all’interno di un callback triggersto da un’azione dell’utente (esempio onclick) per l’apertura della pagina in una nuova scheda anziché in una finestra.

Esempio:

 $("a.runReport").click(function(evt) { // open a popup within the click handler // this should open in a new tab var popup = window.open("about:blank", "myPopup"); //do some ajax calls $.get("/run/the/report", function(result) { // now write to the popup popup.document.write(result.page_content); // or change the location // popup.location = 'someOtherPage.html'; }); }); 

Puoi provare questo:

 open a new tab please  

È molto semplice, per forzare l’apertura di Chrome in una nuova scheda, usa l’evento onmouseup

onmouseup="switchMenu(event);"

 window.open('page.html', '_newtab'); 

Specificare “_newtab”. Funziona in IE e FF e dovrebbe funzionare in Chrome. Ma se l’utente ha le cose configurate per non aprirsi in una nuova scheda, non si può fare molto.

Ho provato questo e ha funzionato bene in cromo. Se l’apertura di una nuova scheda è su un’azione dell’utente (come un clic del mouse), questo funzionerà correttamente senza problemi. Ma se il codice viene eseguito in un altro blocco di script, potrebbe essere necessario abilitare i popup in Chrome. Sembra che questo sia per gestire tutti i siti click-bait.

 let newTab = window.open('', '_blank'); if (this.viewerTab == null) { console.log("opening in new tab to work, pop-ups should be enabled."); return; } ................ newTab.location.href = viewerUrl;