Hoy me he enterado, dicen que más vale tarde que nunca, que la estándar de imprimir con javascript:
window.print();
no funciona siempre en Opera. Para que en lo haga hay que tener en cuenta que la página debe estar completamente cargada. Si esto se cumple, el siguiente ejemplo funciona:
<input type="button" value="Print this page" onClick="javascript:window.print();" ID="Button1" NAME="Button1">
El problema viene cuando antes de imprimir necesitamos hacer algo sobre el HTML ( abrimos una nueva ventana, modificarlo, etc). Tomemos este ejemplo, en el que en la función ocultar() debe hacer cosas previas a la impresión.
function imprimePagina(){
ocultar(); // funcion que necesita ocultar información que no debe ser impresa.
window.print();
// resto de código;
}
Este ejemplo funciona en IE, Firefox, Chrome pero no en Opera. Para solventarlo podríamos probar con:
function imprimePagina() {
ocultar(); // funcion que necesita ocultar información que no debe ser impresa.
window.setTimeout(function () {
window.print();
}, 5);
// resto de código;
}
Que, si no he escrito mal el ejemplo, debiera funcionar. En el caso de que abriéramos una ventana hemos de recordar lo que comentamos al principio: la página, la nueva, debe estar completamente cargada antes de intentar imprimirla en Opera. Como no controlamos en qué momento sucede esto, podemos confiar en el evento load de la ventana para imprimirla.
window.onload = function () {
window.setTimeout(function () {
window.print();
}, 500);
}
Espero que a alguno le valga de algo 🙂
Referencia: http://stackoverflow.com/questions/3482428/window-print-not-working-with-opera-browser
