WebView.setWebViewClient(new WebViewClient() {
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
switch (errorCode) {
case ERROR_AUTHENTICATION: // 서버에서 사용자 인증 실패
case ERROR_BAD_URL: // 잘못된 URL
case ERROR_CONNECT: // 서버로 연결 실패
case ERROR_FAILED_SSL_HANDSHAKE: // SSL handshake 수행 실패
case ERROR_FILE: // 일반 파일 오류
case ERROR_FILE_NOT_FOUND: // 파일을 찾을 수 없습니다
case ERROR_HOST_LOOKUP: // 서버 또는 프록시 호스트 이름 조회 실패
case ERROR_IO: // 서버에서 읽거나 서버로 쓰기 실패
case ERROR_PROXY_AUTHENTICATION: // 프록시에서 사용자 인증 실패
case ERROR_REDIRECT_LOOP: // 너무 많은 리디렉션
case ERROR_TIMEOUT: // 연결 시간 초과
case ERROR_TOO_MANY_REQUESTS: // 페이지 로드중 너무 많은 요청 발생
case ERROR_UNKNOWN: // 일반 오류
case ERROR_UNSUPPORTED_AUTH_SCHEME: // 지원되지 않는 인증 체계
case ERROR_UNSUPPORTED_SCHEME:
WebView.loadUrl("about:blank"); // 빈페이지 출력
AlertDialog.Builder builder = new AlertDialog.Builder(MyView.this);
builder.setPositiveButton("확인", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// 확인버튼 클릭시 이벤트
}});
builder.setMessage("네트워크 상태가 원활하지 않습니다. 어플을 종료합니다.");
// builder.setMessage("네트워크 상태가 원활하지 않습니다. 페이지를 이동합니다.");
builder.setCancelable(false); // 뒤로가기 버튼 차단
builder.show(); // 다이얼로그실행
break;
}}});
//웹뷰 등록 html로 비교하면 iframe 과 비슷하겠네요.
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent"></WebView>
wvs .setWebChromeClient(new webViewChrome()); // alert 경고창 사용
//화면 비율 관련 - 안드로이드 TV셋탑에서 웹뷰 사용할때 웹페이지 viewport가 적용안되서. wvs .setUseWideViewPort(true); //wide viewport를 사용하도록 설정 wvs.setLoadWithOverviewMode(true); // 컨텐츠가 웹뷰보다 클 경우 스크린 크기에 맞게 조정 wvs.setInitialScale(35); //비율 조절 wvs.setDefaultFontSize(8); // 기본 폰트 사이즈 지정 wvs.setMinimumFontSize(8); //폰트 사이즈 지정
//웹뷰 멀티 터치 가능하게 (줌기능) wvs .getSettings().setBuiltInZoomControls(true); //줌 아이콘 사용 설정 wvs .getSettings().setSupportZoom(false);
wvs .setPluginState(WebSettings.PluginState.ON_DEMAND); // 플러그인을 사용 설정 wvs .setCacheMode(WebSettings.LOAD_NO_CACHE); // 웹뷰가 캐시를 사용하지 않도록 설정
이 플러그인은 Apache Cordova WKWebView 플러그인의 확장 입니다. 여기에는 몇 가지 DOM 예외 문제와 함께 XHR 요청을 둘러싼 일부 문제를 해결하기위한 개선 사항이 포함되어 있습니다. Ionic은 Cordova 팀과 협력하여 업데이트를 공식 Cordova 플러그인에 병합하는 최종 목표로 이러한 변경 사항을 완전히 테스트합니다. 베타 테스트 기간이 끝나면 WKWebView 플러그인을 Ionic 기본값으로 설정하여 모든 사용자가 UIWebView에 비해이 플러그인의 향상된 성능을 쉽게 이용할 수있게하는 것이 중요합니다.
이 플러그인은 iOS 9 이상 만 지원하며 iOS 8의 UIWebView로 대체됩니다.
WKWebView 플러그인은 iOS에서만 사용되므로 cordova-ios플랫폼이 설치 되어 있는지 확인하십시오 . 또한 cordova-ios플랫폼 버전이 같 4.0거나 커야합니다.
설치 지침
최신 Cordova CLI가 설치되어 있는지 확인하십시오 (Sudo가 필요할 수도 있음).
npm install cordova -g
ios플랫폼이 추가 되었는지 확인하십시오 .
ionic platform ls
iOS 플랫폼이 목록에 없으면 다음 명령을 실행하십시오.
ionic platform add ios
iOS 플랫폼이 설치되었지만 버전이 < 4.x인 경우 다음 명령을 실행하십시오.
ionic platform update ios
ionic plugin save # creates backup of existing plugins
rm -rf ./plugins # delete plugins directory
ionic prepare # re-install plugins compatible with cordova-ios 4.x
The select tag just doesn’t work sometimes in Android, especially in an app using webview. This drove me nuts for a long long time. The main fix I found, even if your select is buried deep in divs and rows and what ever, is this css: