안드로이드 개발 질문/답변
(글 수 45,052)
webview.loadUrl(); 을 통하여 자바스크립트를 실행할 때
String str = "say \"Hi ^^\" ";
webview.loadUrl("javascript:alert(\" + str + \");");
와 같은 형식으로 문자열을 넘겨주려고 하는데 "처리에 어려움이 있습니다.
자바스크립트에서
str = ' " ';와
str = " \" ";는 같은 값을 가진다는 것과
자바에서 "로 표시되는 것은 \"라는것
이 두가지로 생각해보면 "javascript:alert(\" + str + \");" 에서 제일 처음 "와 마지막 "는 문자열의 범위를 나타내는 것이고
\"는 "로 변해서 전달될 것이고 str안의 \" 또한 "로 변해서 전달될 것 같아서
str의 \"를 \\\"로 치환햇는데도 정상작동이 안되네요.
이것말고도 여러가지 시도해 보았는데 계속 실패하고 있습니다...
"를 다른 것으로 치환하고 스크립트에서 다시 돌리는것도 가능하지만 속도면에서 느릴것 같아서 계속 시도 중인데 잘 안되네요.
이와 관련해서 해결책이나 팁을 알려주시면 감사하겠습니다.ㅠㅠ




http://stackoverflow.com/questions/607176/java-equivalent-to-javascripts-encodeuricomponent-that-produces-identical-output
이런 문제가 있어 Java URLEncoder.encode 와 Javascript decodeURIComponent 가 호환되지 않습니다.
http://littletrue.egloos.com/4227307
// Java
String encoded = URLEncoder.encode(s, "UTF-8");
// Javascript
// 위 웹페이지에 Java URLEncoder compatible 자바스크립트 decodeURI 함수가 있습니다.
decodeURI(encoded);