javascript window.open

javascript - Cómo usar target en location.href



window.open (9)

El problema es que algunas versiones del explorador no son compatibles con la función window.open javascript

¿Que qué? ¿Puede proporcionar una referencia para esa declaración? Con respeto, creo que hay que equivocarse. Esto funciona en IE6 y IE9, por ejemplo.

La mayoría de los navegadores modernos no permitirán que su código use window.open excepto en respuesta directa a un evento de usuario, para mantener a raya las ventanas emergentes de spam y demás; tal vez eso es lo que estás pensando. Siempre y cuando solo use window.open cuando responda a un evento de usuario, debería estar bien usando window.open - con todas las versiones de IE.

No hay forma de usar la location para abrir una nueva ventana. Solo window.open o, por supuesto, el usuario haciendo clic en un enlace con target="_blank" .

Actualmente estoy desarrollando una aplicación web en la que necesito abrir una ventana emergente para mostrar un informe. El problema es que algunas versiones del explorador no admiten la función javascript de window.open, por lo que, en este caso, detecto el error y abro la nueva url con location.href. Aquí el código:

try { window.open(url, "","width=1002,height=700,location=0,menubar=0,scrollbars=1,status=1,resizable=0") } catch(e) { location.target = "_blank"; location.href = url; }

El problema es que location.target no funciona y me gustaría saber si hay una manera de especificar el destino de location.href para que pueda abrirse en una nueva pestaña.


¿Por qué no tener una etiqueta de anclaje oculta en la página con el objetivo establecido según lo que necesita, y luego simular hacer clic en él cuando necesita salir?

¿Cómo puedo simular un clic en una etiqueta de anclaje?

Esto funcionaría en los casos en que window.open no funcionó


A partir de 2014, puede activar el clic en una etiqueta <a/> . Sin embargo, por razones de seguridad, debe hacerlo en un controlador de eventos de click , o el navegador lo etiquetará como una ventana emergente (algunos otros eventos pueden permitirle activar la apertura de forma segura).

jsFiddle


Podrías probar esto:

<script type="text/javascript"> function newWindow(url){ window.open(url); } </script>

Y llamar a la función


Puedes usar esto en cualquier elemento donde funcione onclick:

onclick="window.open(''some.htm'',''_blank'');"


Si está utilizando un <a/> para activar el informe, puede intentar este enfoque. En lugar de intentar generar una nueva ventana cuando falle window.open() , cree el escenario predeterminado para abrir una nueva ventana a través de target (y window.open() si window.open() tiene éxito).

HTML

<a href="http://my/url" target="_blank" id="myLink">Link</a>

JS

var spawn = function (e) { try { window.open(this.href, "","width=1002,height=700,location=0,menubar=0,scrollbars=1,status=1,resizable=0") e.preventDefault(); // Or: return false; } catch(e) { // Allow the default event handler to take place } } document.getElementById("myLink").onclick = spawn;


Si opta por la solución de @qiao, quizás desee eliminar el elemento secundario adjunto ya que la pestaña permanece abierta y los clics posteriores agregarán más elementos al DOM.

// Code by @qiao var a = document.createElement(''a'') a.href = ''http://www.google.com'' a.target = ''_blank'' document.body.appendChild(a) a.click() // Added code document.body.removeChild(a)

Tal vez alguien pueda publicar un comentario en su publicación, porque yo no puedo.


prueba este, que simula un clic en un ancla.

var a = document.createElement(''a''); a.href=''http://www.google.com''; a.target = ''_blank''; document.body.appendChild(a); a.click();


<a href="url" target="_blank"> <input type="button" value="fake button" /> </a>