Yo uso la ventana.abierto para rellenar una nueva ventana con diferentes contenidos. La mayoría de los informes y se almacena el código HTML de procesos automatizados.

He notado algunas muy incoherente comportamiento con Chrome con respecto a la ventana.open().

Algunos de mis llamadas creará una nueva pestaña (de preferencia comportamiento) y de alguna causa de popups.

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

page_content es sólo regular HTML a partir de las llamadas AJAX. Los informes contienen información en el encabezado como el título, el favicon, y algunas de las hojas de estilo.

En IE9, el código causar una nueva pestaña en lugar de un pop-up, mientras que Chrome rotundamente se niega a mostrar el contenido en cuestión en una nueva pestaña. Dado que el contenido es sensible a datos empresariales no puedo publicar aquí. Voy a contestar preguntas si puedo.

Sé que algunos dirán que es el comportamiento de la izquierda hasta el usuario, pero esto es una interna de plataforma de negocios. No tenemos tiempo para entrenar a todos los usuarios sobre la forma de gestionar las ventanas emergentes, y sólo tenemos que estar en una nueva pestaña. Heck, incluso una nueva ventana sería preferible a la ventana emergente, ya que no puede acoplar una ventana emergente en Chrome. Por no hablar de ninguno de bloqueo de ventanas emergentes código de la afectaría.

Apreciar alguna penetración.

  • Lanzar una loca idea: window.open('data:text/html,' + escape(page_content))? EDIT: Solo probado, nope.
InformationsquelleAutor user1441141 | 2012-08-17

5 Comentarios

  1. 40

    ventana.abierto debe ser llamado dentro de un callback, que es provocado por una acción del usuario (por 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';
        });
    });
    • joder yo estaba sospechando que este sería el caso (es decir, la interacción con el usuario/evento involucrados de alguna manera), gracias
    • Puede manipular la ventana emergente de inmediato por lo que podría mostrar un «Procesamiento» mensaje o algo, hasta la devolución de llamada(s) es completo.
    • mi entendimiento es que debe ser una devolución de llamada/controlador a un de la acción del usuario (de lo contrario tal precaución sería fácilmente ‘workaroundable’), en ese caso no veo dónde/cómo/por qué iba yo udisplay el mensaje…? pero quizás no he entendido en tu último comentario
    • Lo siento, me refería a si la acción del usuario de invocar algún tipo de ajax proceso de guardado que debía esperar para una o más peticiones ajax para completar.
    • var popup = ventana.open(«about:blank», «Mi Página»); ventana emergente.ubicación = ‘my_page.html’;
    • He encontrado que incluso esto es difícil cuando usted está ejecutando una pila de funciones derivadas de un evento onClick. Frustrado, me he encontrado extensión de chrome OneWindow para ser de alguna ayuda.
    • siempre ajax está involucrado es mejor para su uso .en lugar de .haga clic en stackoverflow.com/questions/9344306/… referencia: api.jquery.com/on

  2. 3

    Que usted puede probar 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>
  3. 0

    Es muy fácil, con el fin de forzar a Chrome para abrir en una nueva pestaña, utilice el evento onmouseup

    onmouseup="switchMenu(event);"

  4. 0

    He intentado esto y se trabajó muy bien en chrome. Si la apertura de una nueva pestaña en una acción del usuario(como un ratón) esto va a funcionar muy bien sin ningún problema. Pero si el código es ejecutado en otro bloque de secuencia de comandos, usted puede necesitar para permitir los pop-ups en chrome. Parece que esta es manejar todos los click-bait sitios.

    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;
  5. -1
    window.open('page.html', '_newtab');

    Especificar el ‘_newtab’. Esto funciona en IE y FF, y debería funcionar en Chrome. Pero si el usuario tiene cosas configurado para que no se abra en una nueva pestaña, entonces no se puede hacer mucho.

    • _newtab no hace nada en Chrome.
    • También, he comprobado la configuración de Chrome y, a menos que soy ciego no encuentro donde configurar nada, que controla cómo abrir enlaces.

Dejar respuesta

Please enter your comment!
Please enter your name here