마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 > 스크립트호출이 안됩니다..

0 추천

안드로이드에서 스크립트 호출이 되지가 않아 질문드립니다..

에러내용은 "Uncaught ReferenceError: aaa is not defined" 입니다.

소스는

<code>
     mWebView = (WebView) findViewById(R.id.webView1);
  
     WebSettings webSettings = mWebView.getSettings();
     webSettings.setSaveFormData(false);
     webSettings.setJavaScriptEnabled(true);
     webSettings.setSupportZoom(false);
     mWebView.addJavascriptInterface(new AndroidBridge(), "android"); 
    
     mWebView.loadUrl("http://192.168.0.32:8080/mobile.jsp");

     mWebView.loadUrl("javascript:aaa()"); //실행부분..

</code>

스크립트의 aaa함수는

function aaa (){

alert('zzz');

}

이렇게 이루어져 있습니다.

...........

동그랑때앵 (320 포인트) 님이 2016년 3월 10일 질문

4개의 답변

0 추천
aaa 라는 함수가 선언이안됬다는 참조에러니깐 안드로이드 코드쪽보다는 스크립트 쪽 문제일거같네여

 

mobile.jsp 페이지에 아래 스크립트만 남겨두고 다지우신다음 한번 테스트해보세요.,

<script type="text/javascript">

function aaa (){

alert('zzz');

}

</script>
sadeva (21,550 포인트) 님이 2016년 3월 10일 답변
0 추천
저렇게 하게되면 페이지를 로드하는중에 함수를실행하라고 명령하는게 되서 함수선언이 안됬다고 나올텐데 페이지 로드 후에 1-2초후에 함수실행하게 해보세요
익명사용자 님이 2016년 3월 10일 답변
0 추천
mWebView.post(new Runnable() {
    @Override
    public void run() {
        mWebView.evaluateJavascript("aaa()", null);
    }
});
aucd29 (218,390 포인트) 님이 2016년 3월 10일 답변
0 추천
안되는게 당연합니다.

loadUrl() 함수는 비동기 함수입니다.

위와 같이 하시면 jsp 파일을 불러오기 전에 스크립트를 호출한 격이 됩니다.

 

웹뷰에서 페이지가 로딩 완료했다는 리스너가 존재하니 해당 리스너에서 스크립트 호출하세요.

 

        mWebView.setWebViewClient(new WebViewClient() {
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);

            }

            @Override
            public void onPageFinished(WebView view, String url) {

                super.onPageFinished(view, url);
    
            }

        ........
        });
바램 (19,650 포인트) 님이 2016년 3월 11일 답변
...