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
什麼建議嗎?
嘗試使用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