Usuário com melhor resposta
WebcamJS - Função JS não funciona às vezes

Pergunta
-
Tenho essa função javascriptt, que é quando tira a foto da webcam, ela funciona, mas tem horas que a parte "webcam.snap()" não funciona. Não entendo porque, tem horas que ele funciona, e tem horas que não, ele não retorna nenhum erro no console. OBS: Sempre que eu coloco o breakpoint no webcam.snap() funciona.
Utilizei este link como referência.
Segue a parte do código :
function take_snapshot() { document.getElementById('upload_results').innerHTML = '<h1>Realizando Upload da Foto...</h1>'; webcam.snap(); document.getElementById('<%=btnFechaPopWebCam.ClientID%>').click(); }
Tanto que ele chega a realizar o click do FechaPopWebCam, mas nem sempre ele realiza a função do webcam.snap(); E aqui é onde eu chamo a função take_snapshot()
<input type="button" value="Capturar" class="btn btn-default" onclick="take_snapshot();" />
Respostas
-
Mariana, normalmente problemas assim acontecem por implementar um código assíncrono como síncrono, ou seja, logo após disparar um processo assíncrono ($.ajax(), por exemplo) você já tenta acessar um valor que só será alterado após o processamento assíncrono ser concluído. Daí quando inclui um breakpoint, o "atraso" gerado pela parada permite que o processo assíncrono conclua e então o código funcione normalmente.
Juliano Nunes - http://linkedin.com/in/julianonunes
Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.
Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.
- Marcado como Resposta Mariana C. Costa quinta-feira, 8 de fevereiro de 2018 17:07
Todas as Respostas
-
Na verdade o problema está no formulário de Upload, onde eu passo a variável para a sessão, ele não está chegando no formulário, estou depurando e isso não está acontecendo, não sei o porque, já criei um novo formulário fora da página master pra ver se não era um problema com ela, e o mesmo erro acontece, ele não chega a entrar.
Estou passando a variável dessa forma:
webcam.set_api_url('Upload.aspx');
-
Mariana, não entendi muito bem. Você fala em passar a variável para a sessão, mas colocou um código (aparentemente) em JavaScript.
Juliano Nunes - http://linkedin.com/in/julianonunes
Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.
Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.
-
-
Mariana, normalmente problemas assim acontecem por implementar um código assíncrono como síncrono, ou seja, logo após disparar um processo assíncrono ($.ajax(), por exemplo) você já tenta acessar um valor que só será alterado após o processamento assíncrono ser concluído. Daí quando inclui um breakpoint, o "atraso" gerado pela parada permite que o processo assíncrono conclua e então o código funcione normalmente.
Juliano Nunes - http://linkedin.com/in/julianonunes
Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.
Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.
- Marcado como Resposta Mariana C. Costa quinta-feira, 8 de fevereiro de 2018 17:07
-
-
Se você olhar um exemplo na documentação do WebcamJS verá que o snap() aceita um callback (um método que será chamado após a execução do snap):
function take_snapshot() { Webcam.snap( function(data_uri) { // callback // document.getElementById('my_result').innerHTML = '<img src="'+data_uri+'"/>'; } ); }
Faça um teste desta forma, colocando seu código do click dentro do callback.Juliano Nunes - http://linkedin.com/in/julianonunes
Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.
Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.
-
Juliano eu não fiz dessa forma que você falou, o problema estava no click do button logo em seguida, na verdade fui entender mais sobre processos assíncronos, esclareceu super bem, e funcionou certo. Não tinha muito conhecimento sobre o assunto, ajudou bastante, obrigado mais uma vez.
-
Show de bola, Mariana.
Juliano Nunes - http://linkedin.com/in/julianonunes
Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.
Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.