Javascript 锁定对WebView Android的访问
WebView loadUrl运行异步任务以加载给定URL。有一个按钮具有onClick方法和调用loadURL方法。WebView使用JavascriptInterface-特定方法由onload事件()调用。我希望在加载URL之前锁定对对象的访问,并在JavascriptInterface方法中解锁。将loadUrl放入同步块是否足够 编辑: 加载WebViewJavascript 锁定对WebView Android的访问,javascript,android,webview,Javascript,Android,Webview,WebView loadUrl运行异步任务以加载给定URL。有一个按钮具有onClick方法和调用loadURL方法。WebView使用JavascriptInterface-特定方法由onload事件()调用。我希望在加载URL之前锁定对对象的访问,并在JavascriptInterface方法中解锁。将loadUrl放入同步块是否足够 编辑: 加载WebView mRenderReceiptWebView = (WebView) findViewById(R.id.recei
mRenderReceiptWebView = (WebView) findViewById(R.id.receiptWebView);
mRenderReceiptWebView.getSettings().setJavaScriptEnabled(true);
mRenderReceiptWebView.getSettings().setPluginState(PluginState.OFF);
mRenderReceiptWebView.getSettings().setAllowFileAccess(false);
mRenderReceiptWebView.setVisibility(View.VISIBLE);
mRenderReceiptWebView.setWebChromeClient(new WebChromeClient(){
@Override
public boolean onConsoleMessage(ConsoleMessage cm)
{
Log.d("ShowMote", cm.message() + " -- From line "
+ cm.lineNumber() + " of "
+ cm.sourceId() );
return true;
}
});
mRenderReceiptWebView.setDrawingCacheEnabled(true);
mRenderReceiptWebView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
mRenderReceiptWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
mRenderReceiptWevView.addJavascriptInterface(new JavaScriptInterface(),
"Android"); receiptWebView.loadUrl(url);
JavaScriptInterface函数
公共JavaScriptInterface(){
@JavascriptInterface
公共空间
{}
}
html正文加载
<body onload="(function(){ Android.funJS();}());">
您可以使用setWebViewClient和ProgressDialog来实现这一点。说明及代码:
web.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap bitmap) {
// TODO Auto-generated method stub
super.onPageStarted(view, url, bitmap);
//start progress dialog here and setCancellable(false) to dialog
}
@Override
public void onPageFinished(WebView view, String url) {
//dismiss dialog here progressdialog.dismiss()
}
});
或者,您可以在onclick方法中启动progressdialog,并在onPageFinished方法中关闭它。请显示您正在谈论的代码。但是onPageFinished不能确保加载整个网页内容。这就是我使用onload的原因event@dzakens然后,您可以将从getrequest收到的html字符串下载到url,并使用asynctask将该字符串设置为webview。上面的方法是最简单的方法,但是loadUrl调用涉及创建异步任务?@dzakens,正如我前面所说的,下载html并遵循此链接此处没有异步调用,即使有,也会在几毫秒内完成