我正在开发的应用程序具有一个Webview,我需要捕获Webview请求的点击事件(例如:单击链接、单击按钮、单击YouTube视频播放按钮等)
这可以完成。
您需要为您的WebView设置一个WebViewClient
,以下是如何实现。
WebView webView;//make sure to initialize
webView.setWebViewClient(webViewClient);
WebViewClient webViewClient= new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
return true;
}
@Override
public void onLoadResource(WebView view, String url){
if( url.equals("http://yoururl.com") ){
// do something
}
}
}
使用这段代码,它对我有效
webview.setWebViewClient(new WebViewClient()
{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
return true;
}
});
WebView myWebView = (WebView) findViewById(R.id.yourWebView);
myWebView.setWebViewClient(new MyWebViewClient());
myWebView.loadUrl("yourLink");
public class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return true;
}
}
if (typeof AndroidCode != "undefined") {
var coll = document.getElementsByTagName("a");
for (let i = 0; i < coll.length; i++) {
var href = coll[i].getAttribute("href");
if (href.indexOf("#") >= 0) {
coll[i].addEventListener("click", function() {
AndroidCode.reportInternalJump();
});
}
}
}
AndroidCode是通过WebView.addJavascriptInterface声明的对象名称。
这里有另一个有用的例子,虽然它与链接没有直接关系。它会向OnPageFinished报告页面已完全加载(例如,在进行复杂格式设置时非常有用,当行移动完成之前不想设置setScrollY)。
if (typeof AndroidCode != "undefined") {
AndroidCode.setLoadedStatus(false);
window.onload = function () {
AndroidCode.setLoadedStatus(true);
}
}