2012-12-28 50 views
5

我正在使用Android WebView加載簡單的HTML頁面。 HTML取決於一小段Javascript代碼。在使用Android WebView加載html之前注入JavaScript

我需要在HTML加載之前注入Javascript。所以,我不喜歡這樣寫道:

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代碼:

<html> 

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

<body> 
</body> 

</html> 

的JS和HTML工作正常,當我按一下按鈕第一次。但是當我點擊按鈕再次執行加載時,它失敗了。

日誌:

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 

什麼建議嗎?

+0

嘗試使用WebView.loadDataWithBaseURL()http://developer.android.com/reference/android/webkit/WebView.html#loadDataWithBaseURL(java.lang.String,java.lang.String,java.lang.String,java .lang.String,java.lang.String),將變體渲染爲HTML(例如字符串替換),然後將該字符串作爲頁面加載。 – CodeColorist

回答

0

這可能看起來像一個冗長的方法,但你可以讓你的android代碼將js代碼寫入一個文件,然後在你的html文件中引用該文件?

相關問題