javascript - tab - Forzar window.open() para crear una nueva pestaña en cromo
windows open javascript properties (5)
Uso window.open para llenar una nueva ventana con contenido variable. En su mayoría informes y HTML almacenado de procesos automatizados.
He notado un comportamiento muy incoherente con Chrome con respecto a window.open ().
Algunas de mis llamadas crearán una nueva pestaña (comportamiento preferido) y algunas ventanas emergentes de causa.
var w = window.open('''',''_new'');
w.document.write(page_content);
page_content es solo HTML normal de llamadas AJAX. Los informes contienen cierta información en el encabezado, como título, favicon y algunas hojas de estilo.
En IE9 el código causa una nueva pestaña en lugar de una ventana emergente, mientras que Chrome se niega rotundamente a mostrar el contenido en cuestión en una nueva pestaña. Dado que el contenido es información empresarial sensible, no puedo publicarlo aquí. Responderé preguntas si puedo.
Sé que algunas personas dirán que esto es un comportamiento que le queda al usuario, pero esta es una plataforma de negocios interna. No tenemos tiempo para capacitar a todos los usuarios sobre cómo administrar ventanas emergentes, y solo necesitamos que esté en una nueva pestaña. Diablos, incluso una nueva ventana sería preferible a la ventana emergente, ya que no puede acoplar una ventana emergente en Chrome. Sin mencionar que ninguno del código de bloqueo emergente lo afectaría.
Apreciar cualquier idea.
Es muy fácil, para obligar a Chrome a abrir en una nueva pestaña, usa el evento onmouseup
onmouseup="switchMenu(event);"
Lo intenté y funcionó bien en Chrome. Si se abre una nueva pestaña en una acción del usuario (como un clic del mouse), esto funcionará bien sin ningún problema. Pero si el código se ejecuta en otro bloque de script, es posible que deba habilitar las ventanas emergentes en chrome. Parece que esto es para manejar todos los sitios de cebo de clic.
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;
Puedes intentar esto:
<a href="javascript:openWindow();">open a new tab please</a>
<script>
function openWindow(){
var w = window.open("about:blank");
w.document.write("heheh new page opened");
}
</script>
Se debe llamar a window.open dentro de una devolución de llamada que se desencadena por una acción del usuario (ejemplo onclick) para que la página se abra en una nueva pestaña en lugar de una ventana.
Ejemplo:
$("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'';
});
});
window.open(''page.html'', ''_newtab'');
Especifique la ''_newtab''. Esto funciona en IE y FF, y debería funcionar en Chrome. Pero si el usuario tiene cosas configuradas para no abrir en una nueva pestaña, entonces no hay mucho que pueda hacer.