soy sirve saltarse remove que para google eres eliminar demuestra demostrar como chrome bloquear anuncios javascript google-chrome printing

javascript - saltarse - no soy un robot para que sirve



Imprimir JavaScript bloqueado por Chrome, ¿Solución? (6)

¡No más arreglos! Error arreglado como parte de v.23 si no estoy equivocado.

Por lo tanto, si el ciclo de lanzamiento es cada 6 semanas y Chrome 22 se lanzó el 25 de septiembre, entonces el 6 de noviembre (aprox.) La solución estará en la versión Chrome Stable

Sé que se ha discutido aquí anteriormente, sin embargo, no encontré ninguna solución / solución práctica para esto, ¡espero que alguien tenga alguna idea de cómo resolver este problema!

Aquí está:

Si intenta llamar al método window.print() frecuencia dentro de una sola página (como si un usuario window.print() clic en un botón de impresión) en google Chrome, el navegador muestra un mensaje de advertencia en la consola, indicando:

Ignorar llamadas demasiado frecuentes para imprimir ()

¡Y no pasa nada! Después de varios segundos, las cosas vuelven a la normalidad y aparece el cuadro de diálogo de impresión en el momento en que llama window.print() comando window.print() nuevamente. Para empeorar las cosas, la buena gente de Chrome usa el tiempo de espera exponencial para una página que llama al comando de impresión, lo que significa que mientras más usuarios haga clic en un botón para imprimir, ¡más tendrá que esperar a que aparezca el diálogo de impresión!

Este problema ha estado en Chrome durante bastante tiempo (14 versiones subsiguientes) y se confirma que es un error de Area-UI . Lo publiqué nuevamente para el equipo de Google ayer con la esperanza de que alguien del equipo de Chrome pueda verificar cuándo está funcionando esta increíble función molesta. ¡ser arreglado!

Sin embargo, lo que busco aquí es una solución para este problema, ¿hay algo que pueda hacer para que esto funcione? Mi empresa está desarrollando un sistema financiero altamente transaccional con muchos informes que necesitan impresión, y solo por este pequeño problema, todo el proyecto corre el riesgo de ejecutarse en mi navegador favorito de Google Chrome.

Actualizar:

¡Aquí está el código en el navegador Chrome que causa esta función y parece que se necesitan al menos 2 segundos antes de que alguien vuelva a llamar el comando de impresión, por lo que un temporizador de intervalo de 2 segundos en la interfaz de usuario posiblemente podría evitar entrar en una devolución de llamada de espera infinita! cualquier otro pensamiento?


En todos los lugares que veo mencionando este problema, sugiere el uso de temporizadores. Sin embargo, no resuelven el problema y siento que Kamyar es la única persona que realmente lee la fuente y entiende el problema, así que me pregunto por qué aceptó la respuesta que hizo.

El problema principal es que la duración del retraso en Chrome es exponencial, por lo que para que estos temporizadores funcionen, su retraso también debe incrementarse en cada uso, lo que, por supuesto, se volvería muy molesto muy rápidamente. Chrome en realidad solo aplica la demora después de las solicitudes de impresión canceladas, pero no podemos detectar si una impresión es exitosa o no.

La solución de Abathur en realidad funciona mucho mejor de lo que cabría esperar. No estoy seguro de si lo usaré pero funciona.

Las buenas noticias:

1) El retraso se reduce realmente en las versiones más recientes de Chrome. Ahora va: [2, 2, 2, 4, 8, 16, 32, 32, ...] .

2) Alguien abordó el problema el 28 de agosto: http://code.google.com/p/chromium/issues/detail?id=50186 Si desea que se resuelva este problema, por favor comience.


Me he topado con el mismo problema y la solución más directa para mí fue crear una nueva ventana, escribir lo que necesito, cerrarla e imprimirla. No he tenido que lidiar con el límite de Chrome desde que lo cambié para que funcione de esta manera, y no necesito hacer ningún seguimiento.

print_window= window.open(); print_window.document.write(print_css + divToPrint[0].outerHTML+"</html>"); print_window.document.close(); print_window.focus(); print_window.print(); print_window.close();


Mi solución sería llamar al window.print() menos frecuencia. Puede intentar window.print() en un método propio y establecer un intervalo de tiempo mínimo que window.print() pasar antes de que se ejecute nuevamente window.print() . Puede tener algún tipo de cambio / animación en la interfaz de usuario para indicar que se está trabajando.

"Trabajando"

¿A menos que piense que realmente piensa presionar el botón de impresión más de una vez por segundo / cada pocos segundos ayuda? Quiero decir que si la operación window.print() tarda tanto tiempo, no es culpa de los códigos y de todos modos debería haber un window.print() "esperar y ser paciente" en la interfaz de usuario.


Podría reemplazar condicionalmente la función window.print() :

// detect if browser is Chrome if(navigator.userAgent.toLowerCase().indexOf("chrome") > -1) { // wrap private vars in a closure (function() { var realPrintFunc = window.print; var interval = 2500; // 2.5 secs var nextAvailableTime = +new Date(); // when we can safely print again // overwrite window.print function window.print = function() { var now = +new Date(); // if the next available time is in the past, print now if(now > nextAvailableTime) { realPrintFunc(); nextAvailableTime = now + interval; } else { // print when next available setTimeout(realPrintFunc, nextAvailableTime - now); nextAvailableTime += interval; } } })(); }

En lugar de usar un temporizador / envoltorio de seguridad externo, puede usar uno interno. Solo agrega esto y window.print comporta de manera segura en Chrome y normalmente en cualquier otro lugar. (Además, el cierre significa que realPrintFunc , interval y nextAvailableTime son privados para la nueva window.print

Si necesita coordinar las llamadas a window.print entre varias páginas enmarcadas, puede establecer nextAvailableTime en la página principal, en lugar de hacerlo en el cierre, de modo que todos los marcos puedan acceder a un valor compartido utilizando window.parent.nextAvailableTime .


Si todas sus impresoras son compatibles con la red, podría cambiar lo que sucede al hacer clic en el botón Imprimir. En lugar de imprimir la página, su aplicación podría enviar una solicitud a un servidor con la URL de la página para imprimir y con una información sobre qué impresora imprimir.

Luego, el servidor inicia el proceso de impresión manualmente y no habrá un navegador intermedio, lo que podría impedir que lo haga.