Dans mon application, j'utilise WebView
et comme j'utilise la méthode JavaScript alert( )
mais que cela ne fonctionne pas, aucune fenêtre contextuelle ne s'affiche.
dans mon fichier manifeste j'ai ajouté
<uses-permission Android:name="Android.permission.INTERNET"></uses-permission>
et dans le fichier d'activité, j'ai ajouté
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("file:///Android_asset/demo.html");
Dans le fichier XML de mise en page, j'ai ajouté
<WebView
Android:id="@+id/webview"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
/>
Avez-vous une idée de la manière d'activer la variable JavaScript
complète dans WebView
?
Mettre à jour
Merci marque
La méthode alert()
dans le fichier html
fonctionne maintenant :).
Maintenant, il y a deux problèmes dans WebView
:
1: J'utilise un <textarea>
dans le fichier html que je charge dans WebView
, et j'essaye d'écrire avec une police en langue hindi, mais lorsque j'essaie d'écrire du texte en hindi, il s'affiche sous forme de symboles (symboles rectangulaires comme [] ).
quand je fais la même chose dans le navigateur firefox sur le bureau cela fonctionne très bien . aucune idée de la façon de supporter plusieurs langues dans textarea
dans WebView
?
2: Lorsque je clique sur Soumettre et que j'essaie d'ouvrir la valeur du texte dans la méthode alert()
dans un autre script Java, cela ne fonctionne pas. Cela signifie-t-il que même après avoir utilisé WebChromeClient
, Il s'applique uniquement à la page HTML actuellement chargée et non à javascripts
appelé de cette page?
Vérifiez this link, et le dernier commentaire, vous devez utiliser WebChromeClient
pour vos besoins.
Comme d'autres l'ont indiqué, il est nécessaire de configurer WebChromeClient pour que alert()
fonctionne. Il suffit de définir la valeur par défaut WebChromeClient ():
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient());
Merci pour tous les commentaires ci-dessous. Y compris John Smith's qui a indiqué que vous deviez activer JavaScript.
webView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
return super.onJsAlert(view, url, message, result);
}
});
Le code suivant fonctionnera:
private WebView mWebView;
final Activity activity = this;
// private Button b;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
activity.setProgress(progress * 1000);
}
});
mWebView.loadUrl("file:///Android_asset/raw/NewFile1.html");
}
Il suffit d'ajouter
mWebview.setWebChromeClient(new WebChromeClient());
Ça va marcher.
Vous pouvez essayer avec cela, cela a fonctionné pour moi
WebView wb_previewSurvey=new WebView(this);
wb_previewSurvey.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
//Required functionality here
return super.onJsAlert(view, url, message, result);
}
});