html - Javascript não funciona em Webview - Stack Overflow em Português
Javascript não funciona em Webview
Tenho este motor de busca simples, funciona em todos os navegadores, mesmo no chrome do android, mas não funciona em Webviews, alguma sugestão do que possa ser e se há algum outro código compatível que possa substituir este,Tem como fazer isso sem ser por javascript, usando target e action por exemplo, e como habilitar isso para webview??
<input type="text" placeholder="Digite Sua Pergunta Aqui" autofocus name="query" size="50">
window.open("endereco_site" + query.value);
editada 19/04/18 às 10:54
perguntada 18/04/18 às 18:29
Você está habilitando o uso de JavaScript no WebView?
18/04/18 às 18:31
Qual o comportamento que espera? quer dizer, onde essa janela vai abrir? vai sair do app e ir para o navegador?
18/04/18 às 18:50
@ValdeirPsr no caso é o usuário que vai ter que habilitar isso?
18/04/18 às 18:51
@MiguelSilva Não, é o desenvolvedor. Para o JavaScript funcionar, é necessário o desenvolvedor atribuir o valor true no método webView.setJavaScriptEnabled (no caso do Android). E como você está usando popup, talvez haja seja por isso também (não cheguei a testar algo do tipo).
18/04/18 às 18:54
@DavidSchrammel é um app que abre uma página usando webview, quando o usuário digita a pergunta e clica em buscar ele abre outra página com o resultado da busca, só que webview ao invés de aparecer o campo de texto e o submit aparecem dois campos seguido do código java script assim: function myFunction() { var query = document.getElementsByName('query')[0]; window.open("endereco_site" + query.value); }
18/04/18 às 18:55
Creio que para ativar o Javascript tenha que definir o WebChromeClient:
E depois habilitar o JavaScript
package foo.bar.baz; //nome do seu pacote, isso é apenas um exemplo
meuWebView = (WebView) findViewById(R.id.webView); //Busca o seu webView (se estiver layout)
meuWebView.getSettings().setJavaScriptEnabled(true);
meuWebView.setWebChromeClient(new WebChromeClient());
Como adicional, você perguntou:
Tem como fazer isso sem ser por javascript?
Tem sim, usando o target= e action= no form, por exemplo:
<form action="http://endereço" align="center" method="GET">
<input  type="submit" value="Buscar">
respondida 18/04/18 às 19:08
Muito Show, funcionou perfeitamente!
18/04/18 às 19:16
se eu usar um target="_blank" vai funcionar em webviews? ou terei problemas? me refiro a opção apenas com action e target
18/04/18 às 19:26
@MiguelSilva ah verdade, creio que não, eu vou me retratar e melhorar a pergunta, acho que para ambos casos será necessário implementar algo a mais. Vou testar e assim que possivel já retorno.
18/04/18 às 19:31
Testei e funcionou usando o target e action, assim não precisa fazer alteração no APP. Obrigado.
26/04/18 às 16:35
@MiguelSilva então tem que usar o onCreateWindow eu estou preparando um exemplo, eu não consegui criar um ainda (é que eu procuro sempre testar meus exemplos antes de postar) porque algumas coisas mudaram no meu trabalho e estou sobrecarregado :(