2012-12-02 16 views
6

Voglio caricare un URL da webView. L'url è http://wapp.baidu.com/f?kw=%BB%F0%BC%FD, questa pagina può funzionare correttamente sul browser predefinito di sistema, ma nella mia webView, alcuni JavaScript non funzionano. JavaScript è abilitato e non so cosa c'è che non va.JavaScript non funziona in Android WebView

Apprezzerei qualsiasi aiuto.

private void initUI() { 
    webView = (WebView) findViewById(R.id.web_view); 
    webView.getSettings().setJavaScriptEnabled(true); 

    final NavigationBar navigationBar = (NavigationBar) findViewById(R.id.navigationbar); 
    navigationBar.refreshUI(); 
    navigationBar.rightButton.setImageResource(R.drawable.refresh); 
    navigationBar.rightButton.setVisibility(View.VISIBLE); 
    navigationBar.rightButton.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 
      refresh(); 
     } 

    }); 

    navigationBar.leftButton.setImageResource(R.drawable.back); 
    navigationBar.leftButton.setOnClickListener(new OnClickListener() { 

     public void onClick(View arg0) { 
      webView.goBack(); 
     } 

    }); 

    webView.setWebViewClient(new WebViewClient() { 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
     } 

     public void onPageFinished(WebView view, String url) { 
      navigationBar.leftButton.setVisibility(webView.canGoBack() ? View.VISIBLE 
        : View.INVISIBLE); 
      super.onPageFinished(view, url); 
     } 
    }); 

    refresh(); 
} 

aggiornamento: il problema è risolto basta aggiungere seguente codice:

webView.getSettings().setDomStorageEnabled(true); 
+0

Qual è la versione api del dispositivo su cui si sta verificando questo? –

+0

@AliImran il dispositivo è Nexus S con Android 4.1.1, vuoi dire questo? – soso327

risposta

0

Se stai usando Proguard, si ferma JavaScript in esecuzione. Per esempio, nel mio file Proguard-project.txt Ho il seguente:

if your project uses WebView with JS, uncomment the following 
# and specify the fully qualified class name to the JavaScript interface 
# class: 
#-keepclassmembers class fqcn.of.javascript.interface.for.webview { 
# public *; 
#} 
+1

come si usa? Voglio dire, rimuovi solo # segnali dalla classe :? o dovrebbe copiare su un blocco di codice? –

0

penso che ci sia qualche problema con file javascript nella cache/rinfrescante. Ho cambiato il nome file di js & inizia a funzionare correttamente.

Problemi correlati