La vista previa de impresión se abre en el navegador Chrome de escritorio, pero no se abre en los navegadores móviles. Está mostrando que hubo un problema con la impresión de la página. Si uso este código, no funciona en los navegadores móviles, muestra que hubo un problema con la impresión de la página. pero está funcionando en el escritorio
print() { var print = window.open("", "", "left=0,top=0,width=800,height=500, scrollbars=1"); var pcontents= this.state.print; // In this.state.print am getting response from api with html tags like header and paragraph tags print.focus(); print.document.write(pcontents); print.document.close(); print.print(); print.close(); }Agregue una función de tiempo de espera a su print.close() , para permitir que el servicio de impresión en su dispositivo móvil obtenga los datos antes de que se cierre la página.
Debería verse algo como esto:
print.print(); setTimeout(function (){ print.close(); }, 2000);2000 es el tiempo en milisegundos para el retraso. Si su servicio de impresión es lento, esto tampoco funcionará.
Lo que puede hacer es llamar a su print.close() manualmente después de que se realiza la impresión llamándolo después de un evento. Por ejemplo, un deslizamiento para que no haya un botón en su ventana que también se imprima.
Esta es una función de detección de deslizamiento.
document.addEventListener('touchstart', handleTouchStart, false); document.addEventListener('touchmove', handleTouchMove, false); var xDown = null; var yDown = null; function getTouches(evt) { return evt.touches || // browser API evt.originalEvent.touches; // jQuery } function handleTouchStart(evt) { const firstTouch = getTouches(evt)[0]; xDown = firstTouch.clientX; yDown = firstTouch.clientY; }; function handleTouchMove(evt) { if ( ! xDown || ! yDown ) { return; } var xUp = evt.touches[0].clientX; var yUp = evt.touches[0].clientY; var xDiff = xDown - xUp; var yDiff = yDown - yUp; if ( Math.abs( xDiff ) > Math.abs( yDiff ) ) {/*most significant*/ if ( xDiff > 0 ) { /* right swipe */ } else { /* left swipe */ } } else { if ( yDiff > 0 ) { /* down swipe */ } else { /* up swipe */ } } /* reset values */ xDown = null; yDown = null; };