Android Network/Click example

Programmatic Click in WebView

Soul-Learner 2014. 6. 26. 22:17

WebView DOM Navigation Example

Following Links can be clicked programmatically using WebView
Google

Naver

Daum


아래의 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;"+

" }"+

"}"+

   "})()");