증상
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
댓글
댓글 쓰기