2012-12-02 16 views
6

Ich möchte eine URL von WebView laden. Die URL ist http://wapp.baidu.com/f?kw=%BB%F0%BC%FD, diese Seite kann ordnungsgemäß auf Systemstandardbrowser funktionieren, aber in meinem WebView funktioniert einige JavaScript nicht. JavaScript ist aktiviert, und ich weiß nicht, was damit nicht stimmt.JavaScript funktioniert nicht in Android WebView

Ich würde jede Hilfe zu schätzen wissen.

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

Update: das Problem gelöst ist nur folgenden Code hinzu:

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

Was die api-Version von Ihnen Gerät, auf dem Sie dies testen? –

+0

@AliImran das Gerät ist Nexus S mit Android 4.1.1, meinst du das? – soso327

Antwort

0

Wenn Sie proguard verwenden, stoppt sie Javascript läuft. Zum Beispiel in meiner proguard-project.txt Datei habe ich die folgende:

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

Wie benutzen Sie es? Ich meine, Sie entfernen # Zeichen aus der Klasse :? oder sollte auf einen Codeblock kopieren? –

0

Ich denke, es gibt einige Probleme mit Javascript-Datei-Caching/erfrischend. Ich änderte den Dateinamen von js & es beginnt gut zu funktionieren.

Verwandte Themen