http://www.androidpub.com/index.php?mid=android_dev_qna&page=440&listStyle=webzine&document_srl=1617620
안드로이드 브라우저에서 팝업이 뜨는창(ex/로그인, 우편번호찾기) 등을 누르면 위에 팝업창으로 뜨는데.
기본적으로 webview 에서 저런것들을 클릭하면 페이지가 이동되어 버려서..
이걸 webview 에서 구현하려니 계속 막히네요. 구글링도 해보고, 안드로이드 브라우저 소스를 쳐다봐도 찾기가 어렵네요 ㅇ_ㅇ
답변 부탁드립니다~
시나리오를 팝업없도록 고치시는것이 맞을것 같습니다.
네.. 저도 되도록 그러고싶은데 꼭 들어가야할 불가피한 상황이라서요 ;; 어제새벽까지 찾아봤는데 아직 답을 못찾고있네요;ㅠ
팝업시 페이지 이동을 막기위해 자바스크립트 쓰죠
<a href='#' onclick='팝업띄우는함수()'>떠라</a>
팝업창에서는 x버튼같은걸 두어 자바스크립트로 닫으시면 될거같습니다만
네 스크립트로 새창을 띄우게 되어있는데, 웹뷰에서 자바스크립트를 쓰게 해놨음에도 불구하고 그냥 무시해버립니다 ㅇ_ㅇ;;
이동하게 되더라구요.. 꼼수로 새창을 띄웠습니다만, 새창에서 데이터를 받아와야되는데(우편번호 찾기)
데이터를 못가져오더라구요 ㅇ_ㅇ;
난감하네요..ㄷ
혹시 해결하셨나요 ? 저도 같은 문제가 있어서..기존의 웹사이트를 webview로 넣어서 보여주려구 하는데..
새로 오픈된 창에서 parent. 으로 데이터를 넘기는데...parent창이 없다고..오류가 나는군요.
혹시 해결하셨다면...공유 좀 부탁드려도 될까요 ?
안드로이드
개발정보의 "WebView 에서 popup" 참조하세요
http://www.androidside.com/bbs/board.php?bo_table=b49&wr_id=93612
안녕하세요
우선
제가 지금 jsp환경의 홈페이지를 webview를 통해 모바일에서도 볼 수 있도록 하려고 하는 데요
웹뷰를
통해 화면을 띄우는 건 가능한데....jsp의 window.close 나 self.close가 사용되지 않는 다고 해서요..ㅠㅠㅠㅠ
그래서
생각한 게 홈페이지의 새로 띄워지는 팝업 화면을 새 엑티비티보여 줄 수 있는 지 방법이 궁금하네요.
그렇게
된다면 닫기 명령어 대신 엑티비티를 닫으면 되니깐 조금은 풀릴 수 도 있을 것 같아서요
지금도
계속 검색 중인데...방법을 찾기가 힘드네요...질문은
1.
안드로이드 웹뷰에서 jsp에 닫기 명령어를 줄 수 있는 방법이 있는 지
2.
웹뷰에서 띄운 jsp홈페이지의 팝업화면을 새 엑티비티에 뿌려 줄 수 있는지
어려운
질문이란건 압니다. 그래도 참조할 사항이나 다른 방법을 알고 계시면 알려주세요~
안드로이드,
iOS 모두 마찬가지로 Bridge 패턴으,ㄹ 사용하여 개발하시면 가능합니다
http://www.androidpub.com/1585094
registerWebView.getSettings().setJavaScriptEnabled(true);
자바스크립트가 작동하도록 설정은 해주었습니다.
웹사이트에서는 window.close(); 함수와 같은 것들이 작동을 하는데
webview에서는 왜 작동이 안되는걸까요 ?
registerWebView.loadUrl("url);
url 호출은 loadUrl 로 호출..
앱에서 webview를 불러와서 사이트에 있는 확인버튼을 클릭하면 webview가 닫히고 다시 앱으로 돌아가는
프로세서로 만들려고 하는데 어찌해야하는지.. 감이 안오네요 - _ㅠ
javascript도 안먹는 상황인지라...
조언부탁드립니다.
WebView 를 사용하셧으면
Activity 위에다가 올리셨을탠대,,
그렇다면, Activity 에다가 menu나 버튼 같은걸 추가해서, 그 버튼을 누르면, finish(); 이벤트를 호출시키면되지 않을까요.
2011.06.08 17:07:44복복복저도 해봤는데 window.close();는 먹지 않더군요 ㅎ 그래서 자바스크립트에서 어플의 매서드를 호출하게 해서 어플에다가 finish();를 줘서 웹뷰를 뿌리는 액티비티 자체를 종료시켜버렸습니다. ㅎ
자바 스크립트에서 function web_finish(){window.android.webview_finish();} 라고 준 뒤
html 에서는 onclick = "web_finish()" 로 호출하고
어플 소스에서는
onCreate에
WebView wv = (WebView)findViewById(R.id.PayView);
wv.addJavascriptInterface(new JavaScriptInterface(this), "android");로 놓고
public class JavaScriptInterface{
Context mContext;
JavaScriptInterface(Context c){
mContext = c;
}
public void webview_finish(){
finish();
}
}
이런 식으로 하시면 웹뷰가 속한 액티비티 자체가 종료 됩니다.
구조를 잘 모르겠는대,
A activity 에서 웹뷰를 포함한 B activity를 실행시켜서 화면 전체를 덮는거 아닌가요?
그렇다면 B activity에서 webview 밖에 버튼을 하나 올려 놓는다던지 아니면 메뉴 기능을 넣어서
거기에 finish() 를 호출하면,
B activity가 사라지면서 자연스럽게 A activity가 보이는거잖아요.
복잡하게 자바스크립트 안쓰고도 될거 같은대,,
하늘나라님 말씀이 훨씬 편한 방법이긴 하죠 ㅎ 웹뷰 위에 버튼을 겹쳐 놓고 이벤트 걸면 엄청 편하죠 ㅎ 하지만 질문은 웹뷰안에 있는 버튼을 가지고 종료하시길 원해서 제가 했던걸 알려드렸던것 뿐이에요 ㅎ
혹시 웹뷰에 클라이언트는 뭘로 걸어 주셨나요?
일반 webviewclient로 걸어주면
백날 해봐야 자바스크립트 안먹히더군요...
개발자 사이트에서 webchromeclient 검색해보세요. 저도 비슷한 문제가 있었는데
여기서 보고 5분만에 해결했습니다.
모두 감사합니다 ~ ^^
복복복 님 이 알려주신방법으로 하니 해결되네요 ^^
낭만폭풍님이 말하신 webchromeclient 쓰시는게 더 옳은 방법인것 같습니다~~^^
onCreate() 에
1.
mWebView.setWebViewClient(
new
CustomWebViewClient());
이너클래스 추가
1.
private
class
CustomWebViewClient
extends
WebViewClient{
2.
@Override
3.
public
void onReceivedHttpAuthRequest(WebView view,
4.
HttpAuthHandler handler, String host, String realm) {
5.
// TODO Auto-generated method stub
6.
super.onReceivedHttpAuthRequest(view, handler, host, realm);
7.
}
8.
}
이거 넣어보세요