Programmatic Click in WebView
WebView DOM Navigation Example
Following Links can be clicked programmatically using WebView
Google
아래의 HTML 내용이 WebView에 로드된 상태라면 포함된 3개의 링크를 구별하여 프로그램적으로 클릭효과를 낼 수가 있다.
links.html
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>WebView loadUrl() Test</title>
</head>
<body>
<h2>WebView DOM Navigation Example</h2>
Following Links will be clicked programmatically by WebView<br>
<a href="http://google.co.kr">Google</a>
<a href="http://naver.com">Naver</a>
<a href="http://daum.net">Daum</a>
</body>
</html>
위의 HTML 코드를 로드한 WebView의 loadUrl() 과 자바스크립트의 DOM을 이용하여 특정 링크를 확인하여 코드상에서 클릭효과를 낼 수 있다. 참고로 DOM 오브젝트에 있는 click()함수는 안드로이드에서는 구현되어 있지 않기 때문에 아래처럼 클릭하는 기능을 구현해야 한다는 것이다
MainActivity.java
webView.loadUrl("javascript:(function(){"+
"var arr = document.getElementsByTagName('a');"+
"for(var i=0;i<arr.length;i++) {"+
" if(arr.item(i).getAttribute('href')=='http://google.co.kr') {"+
" link = arr.item(i);"+
" e=document.createEvent('HTMLEvents');"+
" e.initEvent('click',true,true);"+
" link.dispatchEvent(e);"+
" break;"+
" }"+
"}"+
"})()");