95 votes

Alerte JavaScript ne fonctionne pas sous Android WebView

Dans mon application j'utilise WebView et en ce que je suis en utilisant JavaScript alert( ) méthode mais sa ne fonctionne pas, pas de pop-up apparaît.

dans mon fichier de 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 la mise en page fichier xml, j'ai ajouté

<WebView 
    android:id="@+id/webview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
/>

Aucune idée de comment faire pour activer pleinement JavaScript en WebView?


Mise à jour

Merci mark
l' alert() méthode html le fichier travaillent maintenant :) .

Maintenant, il y a deux questions dans WebView :
1: je suis à l'aide d'un <textarea> dans le fichier html que je suis de chargement en WebView , et d'essayer d'écrire en Hindi police de la langue, mais quand j'essaye d'écrire en Hindi texte, il s'affiche comme symboles ( rectangle les symboles [] ) .

lorsque je fais la même chose dans le navigateur firefox sur le bureau, il fonctionne très bien. aucune idée de comment donner du support pour plusieurs langues en textarea en WebView ?

2: Quand je clique sur soumettre et à essayer d'ouvrir la valeur de texte en alert() méthode dans un autre script java, ça ne fonctionne pas , signifie-t-il même après l'utilisation de WebChromeClient applicable uniquement pour le courant de chargement de la page html et pas javascripts appelé à partir de la page ?

127voto

Stephen Quan Points 4429

Après avoir lu les réponses, j'ai tiré la plus succincte 1 liner de répondre:

mWebView.setWebChromeClient(new WebChromeClient());

c'est à dire en fournissant la valeur par défaut WebChromeClient() est suffisant pour JavaScript alert() de travail.

93voto

sat Points 9580

Suivez ce lien , et le dernier commentaire , Vous devez utiliser WebChromeClient pour votre but.

http://code.google.com/p/android/issues/detail?id=752

23voto

Nikhil Dinesh Points 1412
       webView.setWebChromeClient(new WebChromeClient() {
       @Override
        public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
                    return super.onJsAlert(view, url, message, result);
           }
   });

5voto

user1645162 Points 31

Le code suivant fonctionne:

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");
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X