2012-12-02 8 views
6

Tôi muốn tải url bằng webView. Url là http://wapp.baidu.com/f?kw=%BB%F0%BC%FD, trang này có thể hoạt động chính xác trên trình duyệt mặc định của hệ thống, nhưng trong webView của tôi, một số JavaScript không hoạt động. JavaScript được bật và tôi không biết có gì sai với nó.JavaScript không hoạt động trong Android WebView

Tôi sẽ đánh giá cao bất kỳ trợ giúp nào.

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: vấn đề được giải quyết chỉ cần thêm đoạn mã sau:

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

Phiên bản api nào của thiết bị mà bạn đang thử nghiệm trên thiết bị này? –

+0

@AliImran thiết bị là Nexus S với Android 4.1.1, ý của bạn là gì? – soso327

Trả lời

0

Nếu bạn đang sử dụng Proguard, nó dừng chạy javascript. Ví dụ: trong tệp proguard-project.txt của tôi, tôi có các thông tin sau:

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

bạn sử dụng nó như thế nào? Tôi có nghĩa là bạn chỉ cần loại bỏ # dấu hiệu từ lớp :? hoặc nên sao chép vào một khối mã? –

0

Tôi nghĩ rằng có vấn đề với việc lưu/làm mới tệp javascript. Tôi đã đổi tên tập tin js & nó bắt đầu hoạt động tốt.