Translate

2016년 2월 20일 토요일

[Android] WebView 에서 Javascript apply function이 작동되지 않는 이슈




증상

PC 버전의 Chrome 에서는 Function 객체에 apply 사용 시 정상적으로 작동이 되는 것을 확인했는데 안드로이드에서 apply 작동이 되지 않았다.

내가 사용한 코드는 아래와 같았다.
window.[method].apply(null, args);






원인

apply 함수의 첫번째 인자로 this 객체를 넘겨주지 않아서 문제가 되었다.








해결방법

apply 함수 실행 시 첫번째 인자로 Android Bridge 객체를 같이 넘겨줘야 한다.


안드로이드
WebView.setJavaScriptEnabled( true );
WebView.addJavascriptInterface( new MyBridge(), "AppInterface" );

private class MyBridge{
 public void functionName( String arg ){
  // do sth..
 }
}



자바스크립트
var args = {};
window.AppInterface.functionName.apply(window.AppInterface, args);







참고
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Function/apply
http://stackoverflow.com/questions/14231463/javascript-apply-function-is-not-working-on-android-webview


댓글 없음 :

댓글 쓰기