2012-12-28 10 views
5

Basit bir HTML sayfasını yüklemek için Android WebView kullanıyorum. HTML, küçük bir Javascript koduna dayanır.html önce JavaScript'i enjekte et Android ile yüklenmemiş WebView

html yüklenmeden önce Javascript'i enjekte etmem gerekiyor. Yani böyle yapmak:

public class MainActivity extends Activity { 

    WebView mWebView; 
    Button mButton; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mWebView = (WebView)findViewById(R.id.webview); 
     mWebView.getSettings().setJavaScriptEnabled(true); 
     mWebView.setWebChromeClient(new WebChromeClient(){ 
      @Override 
      public boolean onJsAlert(WebView view, String url, String message,JsResult result) { 
       return super.onJsAlert(view, url, message, result); 
      } 
     }); 


     mButton = (Button)findViewById(R.id.button); 
     mButton.setOnClickListener(new myListener()); 
    } 

    class myListener implements OnClickListener{ 

     int mCount = 1; 

     @Override 
     public void onClick(View arg0) { 
      System.out.println("Load test page=>"+mCount+" times"); 
      mWebView.loadUrl("javascript:var output='This string is defined before html loaded.'"); 
      mWebView.loadUrl("file:///android_asset/test.html"); 
      mCount++; 
     } 
    } 
} 

HTML kodu: JS ve HTML çalışıyor

<html> 

<head> 
<script> 
alert(output); 
</script> 
<head> 

<body> 
</body> 

</html> 

ben butonu ilk kez tıklayın. Ama yükü tekrar çalıştırmak için düğmeye tıkladığımda başarısız oldu.

Kayıtlar:

Load test page=>1 times 
Load test page=>2 times 
Uncaught ReferenceError: output is not defined at file:///android_asset/test.html:5 
Load test page=>3 times 
Uncaught ReferenceError: output is not defined at file:///android_asset/test.html:5 

Herhangi bir öneri?

+0

WebView.loadDataWithBaseURL() http://developer.android.com/reference/android/webkit/WebView.html#loadDataWithBaseURL(java.lang.String, java.lang.String, java.lang.String, java'yı deneyin. .lang.String, java.lang.String), varyantı HTML'ye dönüştürün (örneğin dize değişimi) ve ardından dizeyi sayfa olarak yükleyin. – CodeColorist

cevap

0

Bu uzun soluklu bir yaklaşım gibi görünebilir, ancak android kod bir dosyaya js kodu yazmak olabilir, sonra html dosyasında bu dosyayı referans?