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

WebView JavaScript 오류 질문 드립니다.

0 추천
안녕하세요~

몇일 찾아보다 도저히 답이 없어 질문합니다.

 

앱 특성상 WebView를 removeView / addView 를 하고 있는데요.

문제는 처음 addView 했을때는 모든 기능 정상입니다만,

같은 레이어아웃에 addView를 통해 WebView를 하나 더 생성했을때 javascript가 먹히지 않고 있습니다.

정확하게는 페이지 로드 시 부터 스크립트는 모두 무시되고 있습니다.

모든 페이지 동일합니다.

 

getJavaScriptEnabled(), getDomStorageEnabled 조회 시 모두 true 입니다.

 

몇일 진도를 못나가고 있네요 조언 부탁드립니다.
카쿠센 (140 포인트) 님이 2016년 7월 25일 질문

1개의 답변

0 추천
먼가 안맞는 부분이 있나봅니다.

webview 생성 (설정) 과 view의 add/remove 부분을 어떻게 하셨는지요?
aucd29 (218,390 포인트) 님이 2016년 7월 25일 답변
add 시 는,
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);

webView.getSettings().setSupportMultipleWindows(true);
webView.getSettings().setSupportZoom(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setDisplayZoomControls(false);

webView.getSettings().setLoadsImagesAutomatically(true);

webView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND);

webView.getSettings().setAppCacheEnabled(true);

webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setAllowContentAccess(true);

webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

webView.getSettings().setDefaultTextEncodingName("UTF-8");

webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);

위와 같이 세팅을 하게 되어 있고,
remove 시 는,
상위 레이어아웃에서 removeView 후
webView.stopLoading();
webView.removeAllViews();
webView.destroy();

정말 이해가 안가는게 앱 종료 후 재실행시에도 javascript가 먹히지 않습니다.

얼추 생각해보기에 앱내에 잘못된 정보가 캐시로 남아 있지 않나 싶어 캐시, 쿠키 도 삭제 해보았는데도 마찬가지네요
webview 설정 값 이 쿠키랑은 무관할 것 같습니다.
add/remove 설정 값 이 아닌 add/remove 를 어떻게 하고 계시는건가요?
부모 레이어아웃은 CoordinatorLayout 인데 위 WebView 생성하여 세팅 후 addView 해주고 있고,
부모 레이어아웃에서 removeView 후 WebView 초기화 하고 있습니다.

추가 테스트로 Activity를 하나 더 생성해서 WebView를 세팅해서 loadUrl 해줬는대도 마찬가지입니다.
이해를 돕기 위해 간단하게 코드 작성해봤습니다.
https://github.com/aucd29/test-webview
크게 문제 없이 동작되는데 뭐가 다른지 봐보세요
답변감사합니다.
설정부분 비슷하게 되어 있네요.

해결은 봤습니다.
쿠키, 세션, 설정 이부분만 2~3일 훝어봤는데,
WebView 에 resume, pause 를 사용한 부분이 있었는데 이게 통합으로 관리가 되는듯하네요
WebView1, WebView2 이렇게 있는데 1에 pause를 걸고 remove 하면 2까지 영향을 받네요;;
전 당연히 별개로 생각하고 거들떠도 안봤던건데 제 생각이 잘못됐네요

다시 한번 답변 감사드립니다.^^
pauseTimer 같은걸 사용하셨나보군요. 해결되었다니 다행입니다.
...