es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Sugerencia para imprimir contenido en Chrome y Edge

Hola, estamos utilizando el siguiente código para imprimir en el navegador IE:

function ieExecWB(intOLEcmd, intOLEparam) {
    try {
        // Crear objeto OLE
        var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
        // Colocar objeto en la página
        document.body.insertAdjacentHTML(''beforeEnd'', WebBrowser);
        // Manejar los errores en tiempo de ejecución si la impresora no está conectada
        oldHandler = window.onerror;
        // Si intOLEparam no está definido, establecerlo
        if ((!intOLEparam) || (intOLEparam < 2) || (intOLEparam > 2))
            intOLEparam = 2;
        // Ejecutar el objeto
        WebBrowser1.ExecWB(intOLEcmd, intOLEparam);
        // Destruir el objeto
        WebBrowser1.outerHTML = '""';
        window.onerror = oldHandler;
    } catch (vException) {
        return;
    }
}

}// fin de ieExecWB()

window.parent.frames.item('frameLeft').document.close();
window.parent.frames.item('frameLeft').focus();
document.frmBD0103.hdnPrnCookie.value = '""';
ieExecWB(6, PRINT_WITHOUT_PROMPT);
window.parent.frames.item('frameLeft').document.open();
window.parent.frames.item('frameLeft').document.write('"Marco Izquierdo....."');
window.parent.frames.item('frameLeft').document.close();

Ahora estamos cambiando el navegador de IE a Edge y Chrome.

¿Podrías sugerir la mejor manera de utilizar la funcionalidad anterior en los navegadores Chrome y Edge por favor?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como Edge y Chrome no admiten el uso de ActiveXObject utilizado en el código anterior para imprimir, se necesita un enfoque alternativo. Una solución podría ser utilizar el método window.print(), que está integrado en la mayoría de los navegadores modernos, incluidos Edge y Chrome. Este método abrirá el cuadro de diálogo de impresión donde el usuario puede seleccionar su impresora y configuraciones deseada antes de imprimir el contenido.

    Aquí tienes un ejemplo de cómo se podría modificar el código anterior para usar el método window.print():

    window.parent.frames.item('frameLeft').document.close();
    window.parent.frames.item('frameLeft').focus(); 
    document.frmBD0103.hdnPrnCookie.value = "";                                   
    window.print(); // abre el cuadro de diálogo de impresión
    window.parent.frames.item('frameLeft').document.open();
    window.parent.frames.item('frameLeft').document.write('Marco Izquierdo.....');
    window.parent.frames.item('frameLeft').document.close();
    

    Esto debería funcionar tanto en Edge como en Chrome sin necesidad de complementos o bibliotecas adicionales. Sin embargo, ten en cuenta que el método window.print() es una acción iniciada por el usuario y no se puede activar automáticamente, el usuario debe hacer clic en un botón o enlace para abrir el cuadro de diálogo de impresión.

Comments are closed.