[英]javascript not working when webview loaded from internal html file in Android
[英]Getting HTML from Android Webview not working
按照標題,我正在嘗試獲取當前Webview內容的HTML。 這是我的方法:
WebView webView = (WebView)findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
WVClient wvClient = new WVClient();
wvClient.setFirst(true);
webView.setWebViewClient(wvClient);
webView.addJavascriptInterface(new MyJavaScriptInterface(this), "HtmlViewer");
webView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress){
progressBar.setProgress(progress);
}
});
webView.loadUrl("http://www.somthing.com");
MyJavaScriptInterface類:
public class MyJavaScriptInterface {
private Context ctx;
MyJavaScriptInterface(Context ctx) {
this.ctx = ctx;
}
public void showHTML(String html) {
Log.i("log","showHTML: "+html);
}
}
WVClient類別:
public class WVClient extends WebViewClient {
private boolean first;
public WVClient() {
super();
setFirst(false);
}
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
if(first){
builder.append("javascript:__doPostBack('promotions_landing$A1','');");
builder.append("javascript:window.HtmlViewer.showHTML('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');");
view.loadUrl(builder.toString());
setFirst(false);
}
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
public boolean isFirst() {
return first;
}
public void setFirst(boolean first) {
this.first = first;
}
}
一切似乎都正確,但無法正常工作。 MyJavascriptInterface中的showHTML()未調用。 我錯過了什么?
我找到了答案。 錯誤在MyJavaScriptInterface類上,JavascriptInterface類實現Annotation,因此注釋@JavascriptInterface必須在MyJavaScriptInterface類中編寫,如下所示,並且沒有類構造函數。
MyJavaScriptInterface類:
public class MyJavaScriptInterface{
@JavascriptInterface
public void showHTML(String html) {
Log.i("log","showHTML: "+html);
}
}
然后,webView的addJavascriptInterface進行如下更改:
webView.addJavascriptInterface(new MyJavaScriptInterface(), "HtmlViewer");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.