passarito Posted March 24, 2023 at 12:16 PM Report Share #630518 Posted March 24, 2023 at 12:16 PM Boas a todos, A função window.print() que uso para imprimir a partir do browser não está a funcionar em Android. Alguém sabe como resolver/contornar o problema? Obrigado Link to comment Share on other sites More sharing options...
iznougudpt Posted March 24, 2023 at 02:55 PM Report Share #630519 Posted March 24, 2023 at 02:55 PM Mas deixou de funcionar ou nunca funcionou? Uso isso no Chrome em Android sem problema (pelo menos ainda ninguém se queixou) Link to comment Share on other sites More sharing options...
passarito Posted March 24, 2023 at 04:54 PM Author Report Share #630520 Posted March 24, 2023 at 04:54 PM Uso isso em PCs, quando fui experimentar em Android com o Chrome ele atualiza a página e só depois é que manda para a impressora. Em windows ele faz ao contrário, primeiro manda para a impressora e só depois é que atualiza a página. O código que tenho é este: <form action="lst-registos.asp" method="post"> <input type="submit" name="botao" value="Imprimir / Processar Registos" onClick="window.print();"> </form> Será que há alguma forma diferente de imprimir primeiro e depois ir para a página lst-registos.asp ? Link to comment Share on other sites More sharing options...
iznougudpt Posted March 24, 2023 at 05:24 PM Report Share #630521 Posted March 24, 2023 at 05:24 PM Tens de trocar o input de submit para botão e criar uma função para fazer o tratamento dos dados. Essa função tem de enviar o pedido de print, esperar uns segundos para garantir que a impressão sai e só depois fazer o submit do form. 1 Report Link to comment Share on other sites More sharing options...
passarito Posted March 28, 2023 at 09:50 AM Author Report Share #630540 Posted March 28, 2023 at 09:50 AM Tentei a forma sugerida com 2 abordagens diferentes ambas sem sucesso. <script> function imprimir(){ window.print(); setTimeout(function() {window.location.href = "processar.asp";}, 5000); } </script> ... <input type="button" name="botao" value="Imprimir / Processar Registos" onClick="imprimir();"> <script> function imprimir(){ window.print(); alert("Processar"); window.location.href = "processar.asp"; } </script> ... <input type="button" name="botao" value="Imprimir / Processar Registos" onClick="imprimir();"> Na primeira opção, apresenta a pagina correta a imprimir mas se o utilizador não concluir a impressão antes dos 5 segs. o sistema vai imprimir a página errada. Na segunda impressão fica bloqueada à espera da resposta ao "alert". O que estarei a fazer de errado? Link to comment Share on other sites More sharing options...
messhias Posted March 28, 2023 at 10:25 AM Report Share #630541 Posted March 28, 2023 at 10:25 AM On 3/28/2023 at 10:50 AM, passarito said: Tentei a forma sugerida com 2 abordagens diferentes ambas sem sucesso. <script> function imprimir(){ window.print(); setTimeout(function() {window.location.href = "processar.asp";}, 5000); } </script> ... <input type="button" name="botao" value="Imprimir / Processar Registos" onClick="imprimir();"> <script> function imprimir(){ window.print(); alert("Processar"); window.location.href = "processar.asp"; } </script> ... <input type="button" name="botao" value="Imprimir / Processar Registos" onClick="imprimir();"> Na primeira opção, apresenta a pagina correta a imprimir mas se o utilizador não concluir a impressão antes dos 5 segs. o sistema vai imprimir a página errada. Na segunda impressão fica bloqueada à espera da resposta ao "alert". O que estarei a fazer de errado? Quando você usa um "alert" a "thread" do browser fica bloqueada e espera a resposta do prompt do mesmo. Tente tirar o alert e veja se funcione. Link to comment Share on other sites More sharing options...
iznougudpt Posted March 28, 2023 at 11:09 AM Report Share #630545 Posted March 28, 2023 at 11:09 AM Em 28/03/2023 às 10:50, passarito disse: Tentei a forma sugerida com 2 abordagens diferentes ambas sem sucesso. <script> function imprimir(){ window.print(); setTimeout(function() {window.location.href = "processar.asp";}, 5000); } </script> ... <input type="button" name="botao" value="Imprimir / Processar Registos" onClick="imprimir();"> <script> function imprimir(){ window.print(); alert("Processar"); window.location.href = "processar.asp"; } </script> ... <input type="button" name="botao" value="Imprimir / Processar Registos" onClick="imprimir();"> Na primeira opção, apresenta a pagina correta a imprimir mas se o utilizador não concluir a impressão antes dos 5 segs. o sistema vai imprimir a página errada. Na segunda impressão fica bloqueada à espera da resposta ao "alert". O que estarei a fazer de errado? Isso é mesmo assim, tem de ser o utilizador a controlar quando é que a impressão terminou. Outra possibilidade é fazeres ao contrário, gravares primeiro na BD e só depois imprimires quando vier o resultado positivo do processar.php. Nessa situação podes deixar o alert para o utilizador carregar apenas quando a impressão terminar. 1 Report Link to comment Share on other sites More sharing options...
passarito Posted March 28, 2023 at 02:28 PM Author Report Share #630548 Posted March 28, 2023 at 02:28 PM Como o processo é rápido, resolvi após processar mandar executar a página com os resultados que quero imprimir. Basicamente é a mesma página carregada antes e depois dos dados serem processados. Desta forma a impressão sai sempre igual. Não é perfeito mas resolve 😐 Obrigado a todos que de uma forma ou outra me ajudaram. Link to comment Share on other sites More sharing options...
messhias Posted March 28, 2023 at 02:33 PM Report Share #630549 Posted March 28, 2023 at 02:33 PM On 3/28/2023 at 3:28 PM, passarito said: Como o processo é rápido, resolvi após processar mandar executar a página com os resultados que quero imprimir. Basicamente é a mesma página carregada antes e depois dos dados serem processados. Desta forma a impressão sai sempre igual. Não é perfeito mas resolve 😐 Obrigado a todos que de uma forma ou outra me ajudaram. Só uma pergunta: você tentou utilizar jQuery. ReactJS ou algum lib/framework de JavaScript para dá mais algum dinamismo? Essas abordagens ajudariam você atingir esse objetivo. Link to comment Share on other sites More sharing options...
passarito Posted March 28, 2023 at 02:54 PM Author Report Share #630550 Posted March 28, 2023 at 02:54 PM Em 28/03/2023 às 15:33, messhias disse: Só uma pergunta: você tentou utilizar jQuery. ReactJS ou algum lib/framework de JavaScript para dá mais algum dinamismo? Essas abordagens ajudariam você atingir esse objetivo. Não usei nada disso. A minha função imprimir ficou assim: function imprimir(){ window.print(); window.location.href = "processar.asp"; } depois dentro do processar.asp "obrigo-o" a refazer a página igual à anterior, isto é, a que eu quero imprimir. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now